html标记内的正则表达式匹配(不捕获,只匹配)

时间:2017-04-23 18:17:42

标签: php regex pcre

这是字符串:<sup>test</sup>
我使用的正则表达式是:(\([\w+\-*\/]+?\)|(?!<)\w+(?<!>))

为什么它匹配所有suptestsup
我想我已经使用过&lt;的负面预测了。和&gt;的负面观察,所以我认为它不会因为它之前没有捕获,因此有&#39;&lt;&#;;之后会有&#39;&gt;&#39;

我想要的只是匹配&#39;测试&#39;,不匹配整个事物并捕获&#39;测试&#39;

请帮忙

2 个答案:

答案 0 :(得分:0)

您需要匹配&lt;。+?&gt;之间的内容含量

<sup>test</sup>

正则表达式:&lt;。+?&gt;(。+?)&lt; /.+?&gt;

取决于你想看的精确程度,你必须调整搜索模式,但这取决于你自己的逻辑

答案 1 :(得分:0)

假设内容介于><之间您只需使用此正则表达式:(?<=>)[^<]+

Demo

<强>解释

[^<]+<

以外的任何字符

(?<=>)先于>

  

注意

     

如果您不想匹配换行或回车,请改用此(?<=>)[^<\r\n]+Here是一个演示。

保持简单;)