首页 > 解决方案 > 正则表达式匹配(替换)跨度标签之间单词中所有出现的双引号

问题描述

我正在尝试替换两个跨度标签之间所有出现的 " 。

我用:

(?<=<span>[a-zA-Z0-9_æøåÆØÅ_,.;:!#€%&\/()$§'])*(\")(?=[a-zA-Z0-9_æøåÆØÅ_,.;:!#€%&\/()$§']*<\/span>)

向后查找字母+特殊字符

寻找 ”

字母+特殊字符的前瞻

但是使用 html 字符串

<span>d"s"s"</span>

它只匹配最后一次出现的 "

如何匹配(最终替换)标签中所有出现的双引号?

提前致谢。

标签: regexhtml-parsing

解决方案


不要打扰后面的样子。相反,匹配"where </span>following 而<span>不是早于</span>,即"在跨度打开/关闭对内

"(?=((?!<span>).)*<\/span>)

现场演示

分解正则表达式:

  • "字面引用
  • (?!<span>).<除了of之外的任何字符<span>
  • ((?!<span>).)*任何字符,但不包括<of<span>
  • (?=((?!<span>).)*<\/span>)其次是</span>之前遇到的输入<span>

推荐阅读