【问题标题】:Regex match whole word including whitespace and fullstop正则表达式匹配整个单词,包括空格和句号
【发布时间】:2015-07-27 11:19:31
【问题描述】:

我正在尝试构建一个匹配 <p><div> 标记中的单词的正则表达式,并将该单词替换为其他文本。这个词可以在标签的开头或在其他词之间或在句子的结尾(以句号、逗号或分号结尾)。我的正则表达式有效,但不完全。标签也可以具有 css 类作为属性。

我的正则表达式:[^<>\n]*\b(Cat|Dog|Fish)\b[^<>\n]*

所以,如果文本是这样的:

(1) <p> Cat test dfdsf</p>
(2) <p> Cat.</p>
(3) <p>Cat.</p>
(4) <p class="test">Cat</p>
(5) <div>Cat</div>
(6) <p>Catfgdggh</p>
(7) <li>Cat</li>

它应该匹配除 (6) 和 (7) 之外的所有内容。同样只有“Cat”应该匹配,而不是标签中的其他单词。

任何帮助将不胜感激。另外,能否请您解释一下。谢谢:)

【问题讨论】:

  • Cat-astrophe 这样的案例呢?是否允许关键字作为复合词的一部分?
  • 不,不应该匹配。想法是完全匹配一个词。现在,一个词可能在句末,所以后面跟着一个 .或 , 或 ;它应该仍然匹配

标签: javascript regex


【解决方案1】:
\b(Cat|Dog|Fish)\b

使用\bword boundary

\b assert position at a word boundary (^\w|\w$|\W\w|\w\W)

【讨论】:

  • 干杯@vks。我刚刚在问题中添加了另一个标准 - 它只需要在 p 和 li 标签内匹配。标签也可以具有 css 类作为属性。
  • 太棒了。请您好心解释一下好吗?
  • @NomadTraveler [&lt;&gt;\n]* 将捕获 tags 中的任何内容。我们捕获标签并使用 \1 确保我们匹配相同的结尾 tag
  • 非常感谢!我有一个非常愚蠢的问题,这可能是无关的。我知道正则表达式在regex101.com/r/oC5rY5/3 中有效,但它在我的网站中无效?我在 Angular JS 文件中进行这个正则表达式调用,它是 .NET 解决方案的一部分。
  • @NomadTraveler 对此知之甚少。在.net 中你需要使用@ 或逐字模式
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-24
  • 2010-11-15
  • 2012-01-06
相关资源
最近更新 更多