我想比较2个字符串并显示任何匹配的单词。
例如 -
string1 =“猫脚” string2 =“猫鞋”
结果应该=“cat”
如何使用正则表达式执行此操作?或者有更好的方法吗?
答案 0 :(得分:1)
Split在空格上的每个字符串,并将它们都转换为sets。他们的intersection将包含他们共有的所有单词。
>>> set("cat feet".split()).intersection(set("cat shoes".split()))
set(['cat'])
此方法不关心单词的排序。 “脚猫”和“猫鞋”将输出“猫”,即使“猫”在两个弦中都没有出现在同一位置。如果要查找两个字符串中位于相同位置的单词,可以将zip拆分字符串放在一起,并仅显示两个字符中存在于同一位置的单词:
>>> [a for a,b in zip("cat feet".split(), "cat shoes".split()) if a == b]
['cat']
>>> [a for a,b in zip("feet cat".split(), "cat shoes".split()) if a == b]
[]
答案 1 :(得分:0)
关于正则表达式的使用: 正则表达式等价于有限自动机,它们具有只有一组有限状态的特性,这反过来又意味着它们具有有限的存储器。因此,你不能做涉及未知的任意长度目标字符串的东西。