我正在尝试对下面的HTML执行正则表达式替换。 我正在使用现有的(我没有写过,也没有真正理解它(正则表达式模式,它忽略了 HTML 标签内的任何内容,但我也需要它来忽略脚本标签之间的任何内容。 模式是(?<!<[^>]*)(diversity|and|inclusion)
。 问题是 javascript 中的 and in 'playerBrandingId'
正在被匹配并最终被替换。 为了以防万一,我使用的是 C#。 你可以看到我在这里得到什么。
<p>When it comes to building more diverse and inclusive workforces, the sports industry is already a leader, but it can do much more. One of the ways SBD/SBJ is focusing on diversity and inclusion is by talking to business leaders about what the industry can do better. In our first video in the “SBJ Diversity and Inclusion” series, we hear from execs working in leagues, technology, recruitment and academia.</p>
<div class="article-offset-block article-video article-offset-block--half">
<div class="u-vr2">
<div id='video-F17F523A70EB43ECAF54DF46144835B4'></div>
</div>
</div>
<script>
var playerParam = {
'pcode': 'poeXI63BtIsR_ugBoy3Z6X8KfiMo',
'playerBrandingId': 'video-F17F523A70EB43ECAF54DF46144835B4',
'autoplay': false,
'loop': false
};
OO.ready(function () { window.ppF17F523A70EB43ECAF54DF46144835B4 = OO.Player.create('video-F17F523A70EB43ECAF54DF46144835B4', 'w5cW9qZTE6qRRDqfBdi861XWJTXci9uE', playerParam); });
</script>
编辑:
该模式是由用户的查询生成的,因此该模式可能包含单词 window
或 player
当我更改模式以包含b
时,这些单词将在 javascript 中匹配,如下所示:(?<!<[^>]*)b(window|player|and)b
另一个例子
将正则表达式更改为(?<!<[^>]*)b(diversity|and|inclusion)b
b
为单词边界添加测试。 强制(
中的每个单词和)
都是完整的单词。
编辑:您正在尝试解析 HTML 以提取文本节点,然后检查它们,在任何情况下,您都不应尝试使用正则表达式解析 HTML,除非您希望调用 rite6 66Ph'nglui mglw'nafh Cthulhu R'lyeh wgah'nagl fhtagn。
使用 HTML 分析库,请参阅此页面了解一些操作方法,或使用 .NET 和 C# 搜索从 HTML 中提取文本节点
答案是你不能根据这个做我想用正则表达式做的事情。