正規表現を使用して他の文字列で文字列を検索しようとすると、期待通りに機能しません。次に例を示します。Pythonで正規表現を使用して文字列を検索する
import re
message = 'I really like beer, but my favourite beer is German beer.'
keywords = ['beer', 'german beer', 'german']
regex = re.compile("|".join(keywords))
regex.findall(message.lower())
結果:
['beer', 'beer', 'german beer']
しかし、期待される結果は次のようになります。
['beer', 'beer', 'german beer', 'german']
それは可能性が行う別の方法:
results = []
for k in keywords:
regex = re.compile(k)
for r in regex.findall(message.lower()):
results.append(r)
['beer', 'beer', 'beer', 'german beer', 'german']
私の望むように働くが、それはnだと思うそれを行う最善の方法。誰かが私を助けることができますか?
質問者のみ、特定のサブストリングは、文字列の一部であるかどうかをテストしたいが、彼は、特定のサブストリングのすべての出現を望んでいません。この場合、 're.findall()'を使うのがこれを実現する最善の方法です。正規表現を避けると、この解決策は必要以上に面倒になります。 – pemistahl
お返事ありがとうございます。今私は間違った関数(findall)を使用していることを知っているので、重複を含む一致を見つけるために何をお勧めしますか? –
@Adrián:正規表現の力が必要か、固定文字列を探したいだけですか? –