我需要对大块 HTML 执行搜索和替换操作。我不希望更改属于 html 标记的任何内容(例如 url) - 我也不希望更改 html 标记之外的 url。我有一个部分解决方案来匹配不在 html ( src ) 中的单词:
word(?!([^<]+)?>)
而正则表达式伙伴也说这将匹配相同:
(?!([^<]+)?>)word
所以,剩下要做的就是确保单词不是看起来像 url 的字符串的一部分 - 像这样:
(https?|ftp|file)://[-A-Z0-9+&@#/%?=~_|$!:,.;]*[A-Z0-9+&@#/%=~_|$]
我不确定这是否可行,我的目的是保留文本中存在的 url,并且是内容 html 的一部分,同时允许对其他任何内容进行搜索和替换操作:
理想的解决方案将匹配 DOG 并替换为 CAT,如下图所示
<h1>DOG</h1> -> <h1>CAT</h1>
<h1 class='DOG'>DOG</h1> -> <h1 class='DOG'>CAT</h1>
<p class='DOG'>DOG: http://www.DOG.com/DOGfood.html DOGfood is delicious.</p> -> <p class='DOG'>CAT: http://www.DOG.com/DOGfood.html CATfood is delicious.</p>
效率加分,我几乎无能为力。