python正则匹配字符串_python – 找到字符串的完全匹配

我使用以下函数来查找字符串中单词的完全匹配.

def exact_Match(str1, word):

result = re.findall('\\b'+word+'\\b', str1, flags=re.IGNORECASE)

if len(result)>0:

return True

else:

return False

exact_Match(str1, word)

但是,如果只是因为以下字符串获奖,我会得到“奖励”和“获奖”这两个词的完全匹配.

str1 = "award-winning blueberries"

word1 = "award"

word2 = "award-winning"

我如何才能得到它,以便re.findall将整个单词与连字符和其他标点符号相匹配?

最佳答案 制作自己的单词边界:

def exact_Match(phrase, word):

b = r'(\s|^|$)'

res = re.match(b + word + b, phrase, flags=re.IGNORECASE)

return bool(res)

从这里复制粘贴到我的翻译:

>>> str1 = "award-winning blueberries"

>>> word1 = "award"

>>> word2 = "award-winning"

>>> exact_Match(str1, word1)

False

>>> exact_Match(str1, word2)

True

实际上,铸造到bool是不必要的,根本没有帮助.没有它,功能会更好:

def exact_Match(phrase, word):

b = r'(\s|^|$)'

return re.match(b + word + b, phrase, flags=re.IGNORECASE)

注意:exact_Match是非常规的套管.只需将其称为exact_match.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值