Lua 匹配字符集中的几个符号

Lua 匹配字符集中的几个符号,lua,gsub,lua-patterns,Lua,Gsub,Lua Patterns,Lua(以及我认为的任何其他正则表达式)具有允许匹配集合中任何符号的字符集。有没有办法将该集合中的多个符号匹配为一个?范例 text:gsub(“foo[^bar]-”,“”)——匹配任何不后跟“b”、“a”或“r”的foo 有没有办法让它允许使用“b”、“a”或“r”,但不允许完全使用“bar”(可能还有一些非一个符号)模式 local s = "{aaa\\rbbb} {ccc\\r\\alpha} {eee\\r}" print(s) local s1 = s:gs

Lua(以及我认为的任何其他正则表达式)具有允许匹配集合中任何符号的字符集。有没有办法将该集合中的多个符号匹配为一个?范例

text:gsub(“foo[^bar]-”,“”)——匹配任何不后跟“b”、“a”或“r”的foo
有没有办法让它允许使用“b”、“a”或“r”,但不允许完全使用“bar”(可能还有一些非一个符号)模式

local s = "{aaa\\rbbb} {ccc\\r\\alpha} {eee\\r}"
print(s)

local s1 = s:gsub("(\\r[^}]-)}","%1\\alpha&H&}")
print(s1)

local s2 = s:gsub("\\alpha", "\0%0")  -- insert zero byte before each \alpha
            :gsub("(\\r%f[^r%z][^}]*)}", "%1\\alpha&H&}")
            :gsub("%z", "")           -- remove all zero bytes
print(s2)
输出:

{aaa\rbbb}{ccc\r\alpha}{eee\r}
{aaa\rbbb\alpha&H&}{ccc\r\alpha\alpha&H&}{eee\r\alpha&H&}
{aaa\rbbb\alpha&H&}{ccc\r\alpha}{eee\r\alpha&H&}

Lua模式在检查多字符上下文方面很差。你现实生活中的问题是什么?@WiktorStribiżew我正在调整Aegisub脚本,它的模式类似于
:gsub((\\r[^}])})、“%1\\alpha&H”..al.“&}”)
,用于检查不结束标记的
\r
。我想检查它是否是
\r
后面没有
\alpha
标记。(所以
\r\alpha
不应该匹配)调整了一点,因为
\r
后面可以有更多的东西,它就像一个符咒!谢谢