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

我需要以某种方式将模式封装在lua模式匹配中,以在字符串中找到该模式的整个序列。我这是什么意思。 例如,我们有这样的字符串:
“字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,