【发布时间】:2011-08-22 17:55:08
【问题描述】:
可能的重复:
RegEx match open tags except XHTML self-contained tags
.NET Regex balancing groups expression - matching when not balanced
例如,如果我有输入:
[quote]他说:
[quote]我不知道![/quote]
但我不同意![/quote]
还有一句话:
[quote]这里有一些其他的引用。[/quote]
如何使用正则表达式有效地抓取引号块而不抓取太多或太少?例如,如果我使用:
\[Quote\](.+)\[/Quote\]
这会抓住太多(基本上是整个事情),而这个:
\[Quote\](.+?)\[/Quote\]
将抓取太少(它只会抓取[quote]He said:[quote]I have no idea![/quote],开始/结束大括号不匹配)。
那么如何使用 Regex 有效地解析这样的嵌套代码块?
【问题讨论】:
-
从理论上讲,嵌套模式是不规则的,因此它们不能被正则表达式处理。当然,大多数现代正则表达式实现都可以适应不规则模式,但使用它们仍然很痛苦。
-
另外,我看到的是 BBCode 吗?见:stackoverflow.com/questions/3788959/…
-
这不是BBcode,我只是将其用作高级示例。我正在创建的实现是自定义的,看起来不太像 BBcode(尽管这个概念是相同的,因此为了简单起见我使用它的原因)。
-
请,请,不要。使用解析器或编写一个。见:stackoverflow.com/questions/1732348/…
-
我会选择合适的解析器,但如果你必须使用正则表达式,请参阅:stackoverflow.com/questions/183846/…