我想比較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