正規表現で、特定の単語が複数回出現する文字列を抽出することは可能でしょうか。


正規表現で、特定の単語が複数回出現する文字列を抽出することは可能でしょうか。

例えば 犬というKWが 下記例の②のように2回以上出現している文字列を抽出したいです。

例  
①犬はよく泣いています。  
②その家の犬は良く吠える犬です。  
③その犬はご飯を食べました。

※テキストエディタで対応できる方法を知りたいですが、もし可能であれば  
正規表現でとありますが、(python勉強中のため)pythonを使って自動化する例も併せて知りたいです。




python による自動化になりますが、探す文字列が "犬" のように決まっており固定であるならば、  
文字列の count メソッドを使用したフィルタリングが高速でよいと思います。  
count メソッドを使うと、文字列に含まれる、特定の文字列の数を数えることができます。  
(例えば `"abracadabra".count("abra")` は実行すると `2` となります。)  
以下にコードを載せておきます。

[code]

    def hantei(s, KW, th):
        return s.count(KW) >= th
    
    strings = ["犬はよく泣いています。",
               "その家の犬は良く吠える犬です。",
               "その犬はご飯を食べました。"]
    
    KW = "犬"
    th = 2
    
    filtered_strings = []
    for s in strings:
        if hantei(s, KW, th):
            filtered_strings.append(s)
    
    print(filtered_strings)
    # Out: ['その家の犬は良く吠える犬です。']
    
[/code]

参考までに、for 文のブロックを以下のように１行で書くこともできます。

[code]

    filtered_strings = [s for s in strings if hantei(s, KW, th)]
    
[/code]

