2 つの文字列を比較し、一致した単語を表示したいと思います。
例えば -
string1 = "猫の足" string2 = "猫の靴"
結果は=「猫」でなければなりません
正規表現でこれを行うにはどうすればよいですか? または、これを行うより良い方法はありますか?
2 つの文字列を比較し、一致した単語を表示したいと思います。
例えば -
string1 = "猫の足" string2 = "猫の靴"
結果は=「猫」でなければなりません
正規表現でこれを行うにはどうすればよいですか? または、これを行うより良い方法はありますか?
各文字列を空白で分割し、両方をsetに変換します。それらの共通部分には、共通するすべての単語が含まれます。
>>> set("cat feet".split()).intersection(set("cat shoes".split()))
set(['cat'])
このメソッドは単語の順序を気にしません。"cat" は両方の文字列の同じ位置に現れませんが、"feet cat" と "cat shoes" は "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]
[]
正規表現の使用に関して: 正規表現は有限オートマトンと同等であり、これらには有限の状態セットしかないという特性があります。つまり、一種の有限のメモリがあることを意味します。したがって、未知の任意の長さの目的の文字列を含むことはできません。