0

我想比较 2 个字符串并显示任何匹配的单词。

例如 -

string1 = "猫脚" string2 = "猫鞋"

结果应该=“猫”

如何使用正则表达式做到这一点?还是有更好的方法来做到这一点?

4

2 回答 2

1

在空格上拆分每个字符串,并将两者都转换为sets。它们的交集将包含它们共有的所有单词。

>>> set("cat feet".split()).intersection(set("cat shoes".split()))
set(['cat'])

此方法不关心单词的顺序。"feet cat" 和 "cat shoes" 将输出 "cat",即使 "cat" 在两个字符串中的位置不同。如果要查找两个字符串中相同位置的单词,可以将拆分的字符串压缩在一起,并仅显示两个字符串中相同位置的单词:

>>> [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]
[]
于 2013-08-27T13:38:04.340 回答
0

仅关于正则表达式的使用:正则表达式等效于有限自动机,它们具有仅具有有限状态集的特性,这反过来意味着它们具有有限的内存。因此,您不能做涉及未知任意长度目标字符串的事情。

于 2013-08-27T13:39:14.830 回答