【问题标题】:Regex for selecting words ending in 'ing' unless用于选择以“ing”结尾的单词的正则表达式,除非
【发布时间】:2018-11-12 21:08:13
【问题描述】:

我想选择以正则表达式结尾的单词,但我想排除以thing 结尾的单词。例如:

everything
running 
catching 
nothing

在这些词中,应该选择跑步和捕捉,应该排除一切和没有。

我尝试了以下方法:

.+ing$

但这会选择一切。我认为前瞻/环顾四周可能是解决方案,但我无法找到一个可行的解决方案。

在 Python 或 R 中工作的解决方案会很有帮助。

【问题讨论】:

  • 使用\b\w*ing\b(?<!thing)\b\w*(?<!th)ing\b

标签: regex regex-negation regex-lookarounds


【解决方案1】:

在 python 中,您可以像这样使用否定的lookbehind断言:

^.*(?<!th)ing$

RegEx Demo

(?&lt;!th) 是否定的后向表达式,如果 th 在字符串末尾出现在 ing 之前,则匹配失败。

请注意,如果您要匹配的单词不在单独的行中,则使用单词边界代替锚点:

\w+(?<!th)ing\b

【讨论】:

    【解决方案2】:

    可能是\b\w+(?&lt;!th)ing\b

    【讨论】:

      【解决方案3】:

      您也可以使用否定前瞻 (?! 来断言右侧的内容不是 0+ 倍的单词字符,后跟 thing 和单词边界:

      \b(?!\w*thing\b)\w*ing\b

      Regex demo | Python demo

      【讨论】:

      • 认为您需要将ing 添加到您的正则表达式的末尾,以便它不匹配不以“ing”结尾的单词。
      猜你喜欢
      • 2018-02-10
      • 1970-01-01
      • 1970-01-01
      • 2022-08-02
      • 2013-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多