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