如何在本文中的“标签”[b] [/ b]之间获取文字?
Here is some
[b]
bold text [b]abcd[/b]
[/b]
and here is [b]another bold text[/b]
我得知
请帮助正则表达!
谢谢!
答案 0 :(得分:1)
嵌套结构很容易与PHP中可用的(非REGULAR)递归模式匹配(即(?R)
,(?1)
,(?2)
等。例如,以下正则表达式匹配(可能嵌套的)粗体BBCode标记:
$re = '%\[B\]((?:(?R)|[^\[]*(?:\[(?!/?B\b)[^\[]*)*)*)\[/B\]%i';
[B]..[/B]
标记之间的内容位于捕获组$1
中。
那些说无法做到的人是错误的。
我刚刚为FluxBB开源论坛软件完成的新解析器使用了这个正则表达式的更高级版本。如果您有兴趣查看它,请参阅:New FluxBB 2011 Parser Regular Expressions。 (但是公平的警告:这不适用于正则表达的弱点!)
P.S。新闻快闪! Perl和.NET也可以这样做。
答案 1 :(得分:0)
正则表达式是完成此任务的错误工具。如果您可以控制输入格式,为什么不使用正确的XML:
Here is some
<b>
bold text <b>abcd</b>
</b>
and here is <b>another bold text</b>