我想比较2个字符串并显示任何匹配的单词。比较或匹配2个字符串并显示匹配的单词
例如 -
字符串1 = “猫脚” 字符串2 = “猫鞋”
结果应该= “猫”
我怎样才能做到这一点用正则表达式?还是有更好的方法来做到这一点?
我想比较2个字符串并显示任何匹配的单词。比较或匹配2个字符串并显示匹配的单词
例如 -
字符串1 = “猫脚” 字符串2 = “猫鞋”
结果应该= “猫”
我怎样才能做到这一点用正则表达式?还是有更好的方法来做到这一点?
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]
[]
只是关于使用正则表达式: 正则表达式等价于有限自动机,它们具有只有一组有限状态的属性,这又意味着它们具有有限的内存。因此你不能做任何涉及未知任意长度目标字符串的东西。
显示python的表现力。 – mvw
太棒了!为了进一步扩展,你将如何匹配每个字符串中的2个单词,并保持它们的顺序? 例如 “像猫脚” “猫鞋样” 得到的结果 - “猫样” 集不会让这个顺序是什么呢? – NorthSide
这取决于。与“猫鞋”相匹配的“猫像脚”输出的正确顺序是什么?为什么? – Kevin