正規表現を使用して重複するマッチを見つける方法


  1. re.findall()を使用する方法:

    import re
    text = "Some text with overlapping matches. Matches are overlapping."
    pattern = r'(?=(\b\w+\b))'
    matches = re.findall(pattern, text)
    unique_matches = list(set(matches))
    
    print("重複するマッチ:")
    print(matches)
    print("一意のマッチ:")
    print(unique_matches)

    この例では、re.findall()関数を使用して正規表現パターンをテキストに適用し、重複するマッチを見つけます。(?=...)は肯定的先読みアサーションを表し、重複するマッチを可能にします。一意のマッチを得るために、重複するマッチリストをセットに変換します。

  2. re.finditer()を使用する方法:

    import re
    text = "Some text with overlapping matches. Matches are overlapping."
    pattern = r'(?=(\b\w+\b))'
    matches = [match.group(1) for match in re.finditer(pattern, text)]
    unique_matches = list(set(matches))
    
    print("重複するマッチ:")
    print(matches)
    print("一意のマッチ:")
    print(unique_matches)

    この例では、re.finditer()関数を使用して正規表現パターンをテキストに適用し、Matchオブジェクトのリストを取得します。match.group(1)を使用して実際のマッチを取得し、重複するマッチを見つけます。

これらの方法を使用すると、正規表現を使ってテキスト内の重複するマッチを見つけることができます。一意のマッチを取得するために、重複するマッチをセットに変換することが重要です。