在字符集中匹配多个符号

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

text:gsub"foo [^bar] - """) - 匹配任何不以'b''a''r'紧接的foo

有没有办法让它允许' b',' a'或'r',但不允许匹配' bar'(和可能是几个非一符号)的模式之后?

点赞
用户1847592
用户1847592
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")  -- 在每个 \alpha 前插入零字节
            :gsub("(\\r%f[^r%z][^}]*)}", "%1\\alpha&H&}")
            :gsub("%z", "")           -- 移除所有零字节
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&}
2020-12-21 18:40:28