正则表达式查找字符串中的最后一个单词(Python)

raj*_*a_m 6 python regex

我正在尝试编写一个简单的正则表达式,用于查找字符串中的最后一个单词是否为特定单词.

我写了这样的东西"(\W|^)dog$".(检查句子中的最后一个单词是否是狗)

这个正则表达式是正确的,但是在python中,当我输入类似的内容时,它什么也没有返回"I like dog".

我在Rubular正则表达式编辑器中对此进行了测试,它似乎有效.

难道我做错了什么 ?

编辑:添加我的简单代码

import re
pm = re.compile("(\W|^)dog$")
has = pm.match("i love dog")
print(has)
Run Code Online (Sandbox Code Playgroud)

Roh*_*ain 18

你不需要在这里使用正则表达式.简单的拆分将完成工作:

>>> s = "I like dog"
>>> s.rsplit(None, 1)[-1] == 'dog'
True
Run Code Online (Sandbox Code Playgroud)

由于您只需要最后一个单词,str.rsplit可以用于从结束开始拆分,而1作为第二个参数传递,只会执行一次拆分.然后获取返回列表的最后一个元素.


至于使用正则表达式执行此操作,您需要使用re.search方法而不是re.match方法.后一个匹配字符串的开头,因此您需要构建正则表达式以匹配整个字符串.你可以宁愿做:

pm = re.compile(r"\bdog$")
has = pm.search("i love dog")
Run Code Online (Sandbox Code Playgroud)

\b是字边界.观看现场演示.

为了做同样的事re.match,你的正则表达式应该是 - r".*dog$".

pm = re.compile(r".*dog$")
has = pm.match("i love dog")
Run Code Online (Sandbox Code Playgroud)