正则表达式(正常或嵌套括号)

Cha*_*ory 8 regex pcre nested brackets

因此,我对全新的正则表达式世界完全陌生.基本上,我正在使用Gedit API创建一个新的自定义语言规范(从C#派生)用于语法高亮(对于Byond的DM).在DM中的转义字符中,您必须使用[variable]作为转义语法,这很简单.但是,它也可以嵌套,例如[array/list [index]].(它可以无限嵌套.)我已经查看了其他问题,当他们询问嵌套括号时,它们只表示嵌套,而在这种情况下它可能是/或.

我尝试了几次尝试:

  • \[.*\]产生结果"测试[测试[测试]测试]测试[测试]测试"
  • \[.*?\]产生结果"测试[测试[测试]测试]测试[测试]测试"
  • \[(?:.*)\] 产生结果"测试[测试[测试]测试]测试[测试]测试"
  • \[(?:(?!\[|\]).)*\] 产生结果"测试[测试[测试]测试]测试[测试]测试".这来自/sf/answers/670668491/,但如上所述,只有在内部没有括号时才匹配.

显然我不知道我在这里做的更复杂的匹配,但至少我了解更多来自其他来源的基本操作.

Ste*_*han 1

来自@Chaos7Theory

在阅读GtkSourceView 的规范参考后,我发现它专门使用了 PCRE。然后我用它作为线索。

深入研究并通过反复试验,我让它可以使用:

\[(([^\[\]]*|(?R))*)\]

我希望这对将来的其他人有帮助。