Lua: 将 PCRE 转换为 Lua

我了解 Lua 没有 PCRE,如何将其转换为 Lua?

# 引用 shell 字符
$a =~ s/[\002-\011\013-\032\\\#\?\`\(\)\{\}\[\]\^\*\<\=\>\~\|\; \"\!\$\&\'\202-\377]/\\$\&/go;
# 引用换行符为 '\n'
$a =~ s/[\n]/'\n'/go;

是否有通用的转换器可以将任何 PCRE 转换为 Lua?

点赞
用户3832970
用户3832970

你可以使用

local a = "\002\003\004\005\006\007\008\009\010\011\012\\\n"
res, _ = a:gsub("([\002-\009\011-\026\\#?`(){}%[%]^*<>=~|; \"!$&'\130-\255])", "\\%1")
res, _ = res:gsub("\n", "'\n'")
print(res)

查看Lua代码演示

请注意在Lua模式中,\不是特殊字符,%用于替换特殊字符(如[),而\ddd转义引用的是十进制而不是八进制码。

2017-06-04 20:46:35