我正在尝试解决一个文本匹配问题,在该问题中,我试图找到没有错误匹配的产品列表之间的匹配项。行进是通过文本相似性完成的。问题是,假设我在一个列表中有 "product G1234",在另一个列表中有 "product G1",这两个元素的所有其他功能都相同。 python 中的 string operator in 在这里不是一个好的选择,因为它匹配这两个产品(而且不应该),有人有什么建议吗?
请您参考如下方法:
使用使用单词边界 \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")
>>>
