正则表达式除了省略包含数据的属性外

时间:2011-04-11 21:19:44

标签: php regex attributes tags preg-replace

例如,我有一个文字:

Bla bla one two three <b> just another test Romans 12:5 </b>
Okay next line and next text Romans 12:5
And this text is important too Romans 12:5
<іmg src="/іmg.png" title="Romans 12:5" alt="Romans 12:5" someattr="Romans 12:5" />
<a title="Romans 12:5" href="/link.html">Romans 12:5</a>

我需要抓住:

Romans 12:5

但正则表达式必须省略属性(alt,title,any)上的文字,并省略<a>标签中的文字。

我有类似的正则表达式,但它捕获所有内容,包括包含文本的属性:

Romans(\?| |\.|\. |\.\r\n|\r\n)([0-9]{1,3}):([0-9]{1,3})

BTW我使用PHP preg_replace和这个正则表达式,这个文本修改如下:

<a href=\"http://site.com/Romans/\\7\\3#\\4\" target=\"Romans 12:5\">\\1</a>

谁知道这样做的现代化方式?

提前致谢!

1 个答案:

答案 0 :(得分:0)

[^">]{1}(Romans \d{1,3}:\d{1,3})[^"<]{1}

在属性和<a>标记之外匹配罗马书12:5 的三个实例。

编辑:为了满足其他要求,您可以使用:

(?:[^">]|^){1}(Romans \d{1,3}:\d{1,3})(?:[^"<]|$){1}

如果这仍然不符合您的需要,regexlib.com有各种各样的正则表达式,可以根据您的需要进行调整,例如this one