Viv*_*vek 0 regex lua pcre nginx
我写了一个正则表达式来匹配下面的字符串类型,当我在正则表达式匹配器中在线检查它时,它按预期工作 -
"['432', '212']"
regex - "(\[)('([^']|'')*'), ('([^']|'')*')(])"
ngx.re.find(string, "\"(\[)('([^']|'')*'), ('([^']|'')*')(])\"", "jo")
Run Code Online (Sandbox Code Playgroud)
当我在 lua 块中使用它来匹配字符串时,它给了我无效的转义序列错误。我转义了双引号,并试图用 \ 转义正则表达式中的特殊字符,但问题仍然存在。任何指针都会有所帮助。谢谢!
我会重申人们在评论中所说的话。您\[
在正则表达式中使用过,它是一个带引号的字符串。在带引号的字符串中,反斜杠开始转义序列,但\[
它是无效的转义序列(有关有效的转义序列,请参阅Lua 5.1 手册),因此 Lua 解析器抱怨它。Vanilla Lua 5.1 只是删除了反斜杠(这在这个正则表达式中会很糟糕),而 Lua 5.3 和 LuaJIT 抱怨它。
您可以通过使用另一个反斜杠"\\["
将反斜杠转义来消除解析错误并确保反斜杠实际上插入到字符串中 – – 就像在 JavaScript 中使用RegExp
构造函数时必须做的那样,或者通过使用长字符串,它不会解释转义序列 - [[\[]]
. 如果使用长字符串,则还必须将\"
正则表达式中的转义双引号替换为纯"
.
归档时间: |
|
查看次数: |
4561 次 |
最近记录: |