我知道我应该使用string.match()
来执行此操作,但我无法匹配“#34; may"在字符串中,例如:
teststring = "right_RT_12"
我可以轻松地做一些事情:
string.match(teststring , 'righteye_RT_[0-9]+')
如果测试字符串的末尾总是有#34; _ [0-9] +,那么这很好,但可能会有一个结尾没有数字的实例。我如何在Lua中迎合这一点?
在Python中我可以做类似的事情:
re.search("righteye_RT(_[0-9]+)?", teststring)
我认为这样的事情会起作用:
string.match(teststring, 'righteye_RT_?[0-9]+?')
但事实并非如此。结果= nil
但是,以下操作可行,但只能找到第一个数字:
string.match(teststring, 'righteye_RT_?[0-9]?')
答案 0 :(得分:3)
?
只能用于Lua模式中的一个字符。您可以使用or
来匹配两种模式:
local result = string.match(teststring , 'righteye_RT_%d+')
or string.match(teststring , 'righteye_RT')
请注意,or
运算符是短路的。所以它首先尝试匹配第一个模式,当且仅当它失败(返回nil
)时,它会尝试匹配第二个模式。
答案 1 :(得分:1)
试试这个:
string.match(teststring, 'righteye_RT_?%d*$')
注意字符串结尾锚$
。没有它,%d*
匹配空字符串,因此整个模式将匹配righteye_RT_junk
之类的内容。