【发布时间】:2017-03-10 17:44:32
【问题描述】:
我正在做一个 html 和 bbcode 解析器。我有这个从内到外捕获重复组的正则表达式:
$re = '/<b>((?:(?!<\/?b>).)*)<\/b>/is';
但我希望能够匹配<b class=”string”>text</b> 或内部的任何其他属性。
我已经在使用:
'/<b((\s)+?.*?)?\>(.*?)<\/b>/is'
但现在当尝试加入他们并添加新的否定前瞻时,我无法使其工作。
我试过'/<b((\s)+?.*?)?\((?:(?!</?b((\s)+?.*?)?>).)*)<\/b>/is'但不能正常工作,为此:
<b class=”string2”><b class=”string”>text</b></b>
它从第一个 b 标签开始匹配,它不应该。我想得到:
<b class=”string2”>[b]text[/b]</b>
【问题讨论】:
-
[强制正则表达式是解析html评论的错误工具]
-
请张贴你想要的前后字符串。
-
@nfnneil 完成添加
-
@WillBarnwell 什么是正确的工具?
-
美汤之类的html解析器
标签: php regex regex-negation