如何区分子字符串和确切的单词?

How to distinguish between a sub-string and exact word?

我正在尝试解决文本匹配问题,在该问题中,我试图找到没有错误匹配的产品列表之间的匹配项。行进是通过文本相似性完成的。问题是假设我在一个列表中有 "product G1234",在另一个列表中有 "product G1",这两个元素的所有其他功能都相同。 python 中的 string operator in 在这里不是一个好的选择,因为它匹配这两个产品(不应该),有人有什么建议吗?

使用使用单词边界的正则表达式 \b 进行精确的单词匹配。 \b 匹配单词字符和非单词字符(反之亦然)。在这里您不能使用 split,因为您要检查的子字符串中间包含一个 space。

\bsub_string\b

示例:

>>> re.search(r'\bproduct G1\b', "product G1234")
>>> re.search(r'\bproduct G1\b', "product G1")
<_sre.SRE_Match object; span=(0, 10), match='product G1'>
>>> 

>>> re.search(r'(?<!\S)product G1(?!\S)', "product G1")
<_sre.SRE_Match object; span=(0, 10), match='product G1'>
>>> re.search(r'(?<!\S)product G1(?!\S)', "product G1234")
>>>