lua匹配重复模式
我需要以某种方式将模式封装在lua模式匹配中,以在字符串中找到该模式的整个序列。我这是什么意思。 例如,我们有这样的字符串:lua匹配重复模式,lua,lua-patterns,Lua,Lua Patterns,我需要以某种方式将模式封装在lua模式匹配中,以在字符串中找到该模式的整个序列。我这是什么意思。 例如,我们有这样的字符串: “字1、字2、字3、字4、字5、字6、字7,” 我需要匹配单词的第一个序列,后跟coma(word1、word2、word3、) 在python中,我会使用这个模式“(\w+,)+”,但在lua中类似的模式(比如(%w+,)++)将返回nil,因为lua模式中的括号表示完全不同的东西 我希望你现在明白我的问题了。 有没有一种方法可以在lua中重复模式?如果您可以使用LPe
“字1、字2、字3、字4、字5、字6、字7,”
我需要匹配单词的第一个序列,后跟coma(word1、word2、word3、
)
在python中,我会使用这个模式“(\w+,)+”
,但在lua中类似的模式(比如(%w+,)++
)将返回nil
,因为lua模式中的括号表示完全不同的东西
我希望你现在明白我的问题了。
有没有一种方法可以在lua中重复模式?如果您可以使用LPeg,您可以很容易地做到这一点:
local lpeg=需要“lpeg”
local str=“word1、word2、word3、word4、word5、word6、word7,”
本地单词=(lpeg.R“az”+lpeg.R“az”+lpeg.R“09”)^1
局部序列=lpeg.C((单词*“,”)^1)
打印(顺序:匹配(str))
您的示例不太清楚word4、word5、word6和word7、
这将为您提供无空格或空位置的任何逗号分隔单词序列
local text = "word1,word2,word3,,word4,word5,word6, word7,"
-- replace any comma followed by any white space or comma
--- by a comma and a single white space
text = text:gsub(",[%s,]+", ", ")
-- then match any sequence of >=1 non-whitespace characters
for sequence in text:gmatch("%S+,") do
print(sequence)
end
印刷品
word1,word2,word3,
word4,word5,word6,
word7,