用于选择以 'ing' 结尾的单词的正则表达式,除非

Regex for selecting words ending in 'ing' unless

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

everything
running 
catching 
nothing

这几个词中,运行和catching应该select编,应该排除一切。

我尝试了以下方法:

.+ing$

但这select就是一切。我在想看看 aheads/look arounds 可能是解决方案,但我还没有找到一个可行的方法。

适用于 Python 或 R 的解决方案会有所帮助。

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

^.*(?<!th)ing$

RegEx Demo

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

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

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

可能是\b\w+(?<!th)ing\b

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

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

Regex demo | Python demo