Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python精确子串匹配_Python_Regex - Fatal编程技术网

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: