使用复杂模式的字符串解析

标签 string lua lua-patterns

我有一个复杂的字符串,其中包含未知数量的字母、数字和字符。例如

"a83bal*av31-ab+asf3/af1124-xxx.afe-100/araw31/31*xxx.g41.abt.eta+131as*dfa"

目标是找到字符串 xxx 并提取它之后的所有内容,直到 +, -, * , /。因此我应该能够提取 xxx.afexxx.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/

相关文章:

mysql - 分隔连接成字符串的数据实体的最佳分隔符是什么?

javascript - 将包含 python 列表的字符串转换为 javascript 数组

lua - # 运算符的规则

lua - 在终止/退出 lua 脚本时调用函数(atexit()/清理函数)

Lua中的多线程

Lua模式替换大写字母

string - Lua gmatch 奇数字符(斯洛伐克字母)

stringbuilder 调用中的 Java 字符串连接

python - 为什么 str.endswith 不允许 "suffix"参数是一个列表?

lua - 模式匹配删除新行字符