正则表达式超前发行

问题描述 投票:1回答:1

我对编码不好,但是我有以下模式“ [。+?]”仅与ITALICIZED TEXT匹配,这真的使我很困惑如何获得BOLD TEXT]

我想[在此获取文本],然后[我想获取并[但要在这里停止] 而且我也想得到这个]];而不是这个。

注意:这种Regex VBscript版本不支持递归。

谢谢!您可以在这里玩https://regexr.com/4rgh0

regex regex-lookarounds
1个回答
-1
投票

我想不出只使用一个正则表达式的好解决方案,但是如果您愿意使用两个,则变得容易得多。

\[([^\[]*?(?:\[[^\]]*?\][^\[]*?)*)\]此正则表达式捕获了一组平衡的括号,以及其中的所有内容-这意味着如果句子中有多个括号的实例,它不会中断。

[\[([^\]]*?)\]此正则表达式捕获括号中的所有内容,并打算在前一个正则表达式的输出中使用。

之所以比一个容易两个原因是因为捕获组无法重复,因此没有递归就无法正确捕获任意数量的嵌套括号(这可能是一个正则表达式的解决方案,但是我对递归没有信心能力)。如果可以的话,仅第一个正则表达式就足够了!

[Demo 1Demo 2

© www.soinside.com 2019 - 2024. All rights reserved.