当前位置: 首页 > 知识库问答 >
问题:

无效转义序列lua regex

钱经业
2023-03-14

我编写了一个regex来匹配下面的字符串类型,当我在regex matcher中联机检查它时,它正像预期的那样工作-

"['432', '212']"

regex - "(\[)('([^']|'')*'), ('([^']|'')*')(])"

ngx.re.find(string, "\"(\[)('([^']|'')*'), ('([^']|'')*')(])\"", "jo")

当我在lua块中使用这个来匹配字符串时,它会给我带来无效的转义序列错误。我转义了双引号,并试图用\转义regex中的特殊字符,但问题仍然存在。任何指针都有帮助。谢了!

共有1个答案

淳于开畅
2023-03-14

我会重申人们在评论中说的话。您在regex中使用了\[,这是一个带引号的字符串。在带引号的字符串中,反斜杠开始了一个转义序列,但是\[是一个无效的转义序列(请参阅Lua5.1手册了解有效的转义序列),所以Lua解析器会抱怨它。Vanilla Lua5.1只是删除了反斜杠(这在这个regex中是不好的),而Lua5.3和LuaJIT会抱怨它。

您可以删除解析错误,并确保反斜杠实际上被插入到字符串中,方法是使用另一个反斜杠转义-“\\[”-就像在JavaScript中使用regexp构造函数时必须做的那样,或者使用不解释转义序列的长字符串-[[\[]]。如果使用长字符串,还必须将正则表达式中转义的双引号\“替换为普通的

 类似资料:
  • 问题内容: 我想过滤掉所有单词,这些单词包含1个数字和3个大写字母,总长度为4。在这里查看我的示例: http //gskinner.com/RegExr/?32taa ArrayList result = new ArrayList (); for(int i = 0; i <= 10; i++){ } 但是,当我将我的regexp模式传递给matcher方法时,出现错误: 我需要换一封信吗?

  • 问题内容: 我正在尝试检查密码是否至少包含一个小写字母,一个大写字母,一位数字和一个特殊字符。 我正在尝试: 但给我一个错误的说法:无效的转义序列。 有人可以帮助我解决问题,并且可以确认这是正确的模式吗? 谢谢,\\ d不要执行错误,但是与Paul%88之类的字符串不匹配,为什么? 问题答案: Java将字符串内部视为开始转义序列。确保使用代替(以便在字符串中获得实际的字符)并且应该没问题。 快速

  • 无效的转义序列(有效的转义序列是\b\t\n\f\r\“\'\\)

  • 我尝试用Java编写regex来匹配URL。我在互联网上找到了regex,它在在线regex编辑器中工作得很好。当我试图在eclipse上运行它时,它会给出以下错误:无效的转义序列(有效的转义序列是\B\T\N\F\R\\“\'\\) 我怎样才能解决这个问题?

  • 问题内容: 我在Java中有一个正则表达式问题。 当我尝试使用此正则表达式时: 我收到以下错误 我不知道该如何处理该错误。我已经尝试过将反斜杠加倍,但没有成功。我希望有人可以帮助我。 谢谢 问题答案: 这应该工作 原因是错误消息中列出的符号具有特殊含义,但不是已定义的要使用的特殊符号之一,这意味着您必须对其进行转义(在符号前添加一个多余的符号)。