当字符串包含方括号时,RegEx中断

RegEx breaking when string contains square brackets

本文关键字:RegEx 中断 方括号 字符串 包含      更新时间:2023-09-26

我一直在使用这个正则表达式来提取小胡子{{Hello}}内容:

/{{'s*['w'.]+'s*}}/g

当小胡子字符串包含方括号时,它正在下降。我一直在摆弄它很长一段时间没有效果,谁能建议一个调整,将意味着它将匹配{{Hello[0]}} ?

我是你的哈克贝利:

'{'{(.*?)'}'}

我总是使用出色的http://www.regexr.com/

来破解这些。

那么,为了解释为什么这在这种情况下有效:

  1. 首先,考虑'{'{ -我们转义(通过使用反斜杠'转义',下一个字符不会被表达式计算,例如,它只是寻找该字符)我们正在寻找的第一个字符(花括号)。
  2. 然后重复该操作以获得第二个大括号。
  3. 接下来,我们打开括号(,使'group'捕获多个令牌-所以我们可以抓取括号内的所有内容。
  4. .匹配除换行符以外的任何字符。
  5. *匹配零个或多个前面的令牌(在本例中除了换行符之外的任何令牌)
  6. ?使前面的量词"懒惰",因为它将尽可能少地匹配。
  7. 关闭)组。
  8. 最后以两个转义字符'}'}
  9. 结束