使用正则表达式忽略标签和 JavaScript



我正在尝试对下面的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 &ldquo;SBJ Diversity and Inclusion&rdquo; 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>

编辑:

该模式是由用户的查询生成的,因此该模式可能包含单词 windowplayer当我更改模式以包含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 中提取文本节点

答案是你不能根据这个做我想用正则表达式做的事情。

最新更新