2

通过模式找到诸如 Hi 之类的单词或主要像 dön 这样的名称的最佳方法是什么,其中包含特殊的字符。它们是可选的,因此显然应该使用“?” 但我不知道用什么控制代码来找到它们。

我基本上想确保我得到的单词中可能包含 unicode 字符,但没有别的。所以 dön 会很好,但没有其他特殊字符或数字之类的括号。

4

1 回答 1

3

根据Unicode 的 Lua 指南,“Lua 的模式匹配工具逐字节工作。一般来说,这不适用于 Unicode 模式匹配,尽管有些事情可以按你的意愿工作”。这意味着最好的选择可能是遍历每个字符并确定它是否是有效字母。要遍历字符串中的每个 unicode 字符:

for character in string.gmatch(myString, "([%z\1-\127\194-\244][\128-\191]*)") do
    -- Do something with the character
end

myString请注意,如果不是有效的 unicode,此方法将不起作用。要检查字符是否是您想要的字符,最好简单地列出您不想要的所有字符的列表,然后排除它们:

local notAllowed = ":()[]{}+_-=\|`~,.<>/?!@#$%^&*"
local isValid = true

for character in string.gmatch(myString, "([%z\1-\127\194-\244][\128-\191]*)") do
    if notAllowed:find(character) then
        isValid = false
        break
    end
end

希望这有帮助。

于 2014-12-10T15:12:46.873 回答