【发布时间】:2018-03-02 08:56:57
【问题描述】:
我正在编写一个 LUA 脚本,该脚本旨在阻止传入数据的任何部分中包含字符串“@7.7.7.7”的所有行。 为此,使用了以下正则表达式:
local reg = regex.new("555d%|@7\.7\.7\.7\\b\|abc.com")
虽然这确实阻止了@7.7.7.7,但它也阻止了@757.787.84.91 我研究了 Lua 编程语言,它表明 % (而不是 )是魔术字符的转义字符。 (点) 因此,在模式 "555d%|@7.7.7.7\b|" 中,\ 没有任何效果,并且 .被用来匹配任何字符。 然而奇怪的是,当我用 % 替换 \ 时,它并没有阻塞包含“@7.7.7.7”的行。 新模式如下:
local reg = regex.new("555d%|@7%.7%.7%.7\\b|")
谁能帮助我知道这可能是什么原因?
【问题讨论】:
-
你用的是什么库?如果要使用 Lua 模式,
@7.7.7.7可以与@7%.7%.7%.7%f[%D]匹配。如果是Iceberg with Oniguruma regex,则需要"555d%\\|@7\\.7\\.7\\.7\\|"(如果|是文字符号)。 -
感谢您的回复。实际上这些都是预先写好的脚本,这是我第一次接触 Lua。因此,尽管我认为它基于 PCRE,但我不确定正在使用哪个库。
-
您真正的意见是什么?我的意思是,您需要 match 的确切文字字符串是什么?请注意,Lua 中的
[[...]]就像 Python 中的原始字符串文字,\不被视为转义序列字符。 moteus的答案对你有用吗?那就接受吧。 -
应该被阻止的输入:<12345678><12345678>12345678>12345678>
标签: lua pattern-matching lua-patterns