[英]Lua matching wrong pattern
我需要匹配字符串並返回 (\aHEX) 和 (text)。
並像使用它
for k, v in string.gmatch("Default \aFFFFFFFFWhite text \aFF0000FFJust red text", "<pattern>") do
-- k = "" / "\aFFFFFFFF" / "\aFF0000FF"
-- v = "Default" / "White text " / "Just red text"
end
試過這個
local text = "Default \aFF00FFFFRed text\a00FF00FFGreen";
for k, v in text:gmatch("(\a%x%x%x%x%x%x%x%x)(%w+)") do
print(string.format("%s: %s", k, v));
-- \aFF00FFFF: Red
-- \a00FF00FF: Green
end
缺少“默認”和“文本”
問題是您不能使用 Lua 模式使一系列模式可選。
您可以使用
local text = "Default \aFF00FFFFRed text\a00FF00FFGreen";
for word in text:gmatch("\a?[^\a]+") do
k, v = word:match("^(\a%x%x%x%x%x%x%x%x)(%w+)$")
if k then
print(string.format("%s: %s", k, v));
else
print(word)
end
end
Output:
Default
FF00FFFFRed text
00FF00FF: Green
詳情:
\a?[^\a]+
匹配所有出現的以可選的\a
開頭,然后包含除\a
以外的一個或多個字符的序列^(\a%x%x%x%x%x%x%x%x)(%w+)$
應用於每個找到的 substring,如果匹配,則生成鍵值對,否則整個匹配是必需的值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.