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

时间:2018-11-12 21:08:14

标签: regex regex-negation regex-lookarounds

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

everything
running 
catching 
nothing

在这些单词中,应该选择运行和捕获,一切都应该排除。

我尝试了以下操作:

.+ing$

但这将选择所有内容。我在想向前看/环顾四周可能是解决方案,但我还没有找到一种可行的方法。

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

3 个答案:

答案 0 :(得分:3)

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

^.*(?<!th)ing$

RegEx Demo

(?<!th)是负向后搜索表达式,如果th在字符串末尾ing之前,则匹配失败。

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

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

答案 1 :(得分:2)

也许像\b\w+(?<!th)ing\b之类的东西。

答案 2 :(得分:2)

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

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

Regex demo | Python demo