我有一个复杂的字符串,其中包含未知数量的字母、数字和字符。例如
"a83bal*av31-ab+asf3/af1124-xxx.afe-100/araw31/31*xxx.g41.abt.eta+131as*dfa"
目标是找到字符串 xxx 并提取它之后的所有内容,直到 +
, -
, *
, /
。因此我应该能够提取 xxx.afe
和 xxx.g41.abt.eta
查找字符串很简单 string:find("xxx")
我遇到的麻烦是收集 "xxx"
之后的所有信息,直到其中一位运算符(operator)。我试过类似的东西
string:match("xxx.(.+[%+%-%*%/])")
以及上述的几种变体,但我缺少一些东西。
最佳答案
str = "a83bal*av31-ab+asf3/af1124-xxx.afe-100/araw31/31*xxx.g41.abt.eta+131as*dfa"
for m in str:gmatch("[+%-*/](xxx.-)[+%-*/]") do
print(m)
end
请注意,-
即使在字符集(例如,[1-9a-f]
)中也有特殊含义,因此必须对其进行转义或放入字符集的开头或结尾,即 [-+*/]
。
关于使用复杂模式的字符串解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33250722/