【问题标题】:Regex formula not looking inside HTML tags正则表达式公式不在 HTML 标记内查找
【发布时间】:2019-06-12 10:50:50
【问题描述】:

My regex pattern 适用于不包含在 HTML 标记中的所有文本:

((?<!-)\btest(?!-)\b)(?=[^<>]*(?:<\w|$))

在下面的示例中,我需要它在这两个字符串中找到“test”的两个实例:

vdsv ds test dsv sdlvk 
<b>dsjn vkjsd test sv</b>

【问题讨论】:

  • 谢谢,为了在 .Net 中工作,我必须添加句点,如下所示:(.*SKIP)(.*F)|\b(?
  • 我发布了正确的 .NET 正则表达式解决方案。

标签: .net regex


【解决方案1】:

在 .NET 中,您可以利用无限宽度的后视:

\b(?<!-)test\b(?<!<[^<>]*)(?!-|[^<>]*>)

.NET regex demo

在代码中:

var pattern = @"\b(?<!-)test\b(?<!<[^<>]*)(?!-|[^<>]*>)";

详情

  • \b - 字边界
  • (?&lt;!-) - 如果在当前位置的左侧有一个 -,则匹配失败
  • test - 字test
  • \b - 字边界
  • (?&lt;!&lt;[^&lt;&gt;]*) - 如果在当前位置的左侧有 &lt; 和除 &lt;&gt; 之外的任何 0 个或多个字符,则匹配失败
  • (?!-|[^&lt;&gt;]*&gt;) - 如果存在 - 或除 &lt;&gt; 之外的任何 0+ 字符,紧跟在当前位置右侧的 &gt; 则匹配失败。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-10
    • 1970-01-01
    • 1970-01-01
    • 2021-09-28
    • 1970-01-01
    • 2017-10-04
    • 1970-01-01
    相关资源
    最近更新 更多