【问题标题】:Regex: match last occurrence of multiple possible words where one word is trailing subset of another正则表达式:匹配多个可能单词的最后一次出现,其中一个单词是另一个单词的尾随子集
【发布时间】:2019-07-10 15:05:41
【问题描述】:

我不确定我是否正确地表达了这个问题和/或有点密集。我有以下正则表达式:

^.*(foobar|bar|abc|xyz)

...我想匹配上述任何一个单词的最后一次出现。初始量词是贪婪的,所以我会在最后一次出现而不是第一次出现,但其中一个词 foo 是另一个 foobar 的尾随子集,所以如果我有句子 one abc two foobar three 那么小组赛是bar,这不是我要找的。应该是foobar。

https://regex101.com/r/fEzBal/1

【问题讨论】:

  • 您可以使用单词边界\b来强制匹配整个单词^.*\b(foobar|bar|abc|xyz)\b。
  • 看起来不错,如果您坚持回答,我会为您接受

标签: regex


【解决方案1】:

解决方案是在您的组之前和之后使用单词边界\b 来强制匹配整个单词。

^.*\b(foobar|bar|abc|xyz)\b

来自文档:

\b 直接匹配由 \w 匹配的字符和不被 \w 匹配的字符(以任意顺序),而不消耗任何字符。

Demo

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多