0

如果短语不包含在 HTML 锚标记或 IMG 标记中,我有一个正则表达式用于替换短语。对于此示例,正在搜索的短语是“hello world”

.net 正则表达式是

(?<!<a [^<]+)(?<!<img [^<]+)(?<=[ ,.;!]+)hello world(?=[ ,.;&!]+)(?!!.*</a>)

EG 正则表达式应该匹配短语中的“hello world”,例如

"one two three hello world four five"

但不应该匹配 hello world 之类的短语

"one two three <a href='index.html'> hello world </a> four five"

或者

"one two three <img alt='hello world' \>four five"

它与我最初开发 .Net 版本时的以下问题有关。如果它是 html 锚标记中的文本,则与字符串不匹配的正则表达式

任何有关如何将其转换为 php 正则表达式的指导将不胜感激。

4

1 回答 1

1

注意:不要使用正则表达式来解析标签。

对于aorimg标签,您可以执行以下操作。

(?!<(?:a|img)[^>]*?>)\bhello world\b(?![^<]*?(?:</a>|>))

观看现场演示

我想对于标签内或标签之间的任何东西,你都可以试试这个。

(?!<[^>]*?>)\bhello world\b(?![^<]*?(?:</[^/]*>|>))

观看现场演示

于 2013-10-07T15:27:44.527 回答