python精确子串匹配
我有一份菜谱和一句话 我想检查句子中是否有一道菜。 但是,如果我做一个正常的python精确子串匹配,python,regex,Python,Regex,我有一份菜谱和一句话 我想检查句子中是否有一道菜。 但是,如果我做一个正常的 if dish in sentence: 我基本上会得到一个子串匹配。我的问题是说我有 dish='puri' sentence='the mutton shikampuri was good' 上面的代码仍然将puri与我不想要的shikampuri匹配 如果我试着把这个句子标记化,我将无法匹配像这样的菜肴 dish='puri bhaji' 有什么办法可以让我忽略那些不以我的菜串开头的火柴吗?基本上,当我的菜是
if dish in sentence:
我基本上会得到一个子串匹配。我的问题是说我有
dish='puri'
sentence='the mutton shikampuri was good'
上面的代码仍然将puri与我不想要的shikampuri匹配
如果我试着把这个句子标记化,我将无法匹配像这样的菜肴
dish='puri bhaji'
有什么办法可以让我忽略那些不以我的菜串开头的火柴吗?基本上,当我的菜是“puri”时,我想忽略像“shikampuri”这样的模式 您需要的是使用
\b
重新搜索
import re
if re.search(r"\b"+dish+r"\b",sentence):
你可以写:
if dish在句子中。split():
这会将句子按空格分割成一个列表,并在单词列表中查找一道菜。单词边界与reCan你的菜名能在句子的开头吗?如果没有,那么我认为搜索“puri”解决了你的问题,在你的盘子前后都有空格,这是一个很好的、干净的一行。我喜欢。是的。但此解决方案将无法找到带有空格的字符串,例如dish='puri bhaji'。我在回答时错过了那个说明。因此,正则表达式解决方案是这里更好的选择。这正是我所需要的。谢谢:)在旁注中,r“\b”中的“r”代表什么?@pd176: