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

时间:2015-04-21 02:05:04

标签: python string string-matching

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

1 个答案:

答案 0 :(得分:5)

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

\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")
>>>