【发布时间】:2019-07-14 22:17:02
【问题描述】:
我正在努力使用公式替换字符串中的文本,同时查看除“a”标签(链接)之外的所有标签。
这是我目前的公式:
\b(?<!-)text\b(?<!<[^<>]*)(?!-|[^<>]*>)
例如,我只想替换 'a' 标记之外的 'text' 实例,所以在 'p' 和 'li' 标记内:
<p>
Some text here. <a href="#">Some more text</a>
<ul>
<li>Other text</li>
</ul>
</p>
它还必须匹配整个单词,包括破折号,该公式目前可以成功地做到这一点。它也(我相信)不会替换标签本身的任何内容,即:
<li class="text">here some text</li>
它不会替换类名中的“文本”。
【问题讨论】:
-
使用正则表达式可能不是一个好主意:stackoverflow.com/questions/1732348/…
-
不同的(比如
li)标签insidea标签中的文本怎么样? -
a 标签内的任何东西,即使是嵌套的,都应该被忽略@MetaColon
-
您的公式基于哪种正则表达式?在regex101.com 上,PCRE、ECMAScript、Python 和 Golang 都有错误(所以基本上每种风格)。
-
但直觉上在我看来这超出了常规语言的范围,因为你必须知道你的嵌套有多深,以确保你在所有
a之外标签。我想这应该不是问题,因为您很少会嵌套a标签,但您应该注意不完美的解决方案