テキスト内の文字列「WfooXbarYbazZ」を検索したい。W、X、Y、Zは重要でない区切り文字であり、検索してはなりません。foo、bar、bazは私が興味を持っている単語です。順序はそれほど重要ではありません。必要な単語がテキストでどのように「良い」か知りたいです。
私は次のことを試みています
(?:\Qfoo\E)?.{0,3}(?:\Qbar\E)?.{0,3}(?:\Qbaz\E)?
私の推論は次のとおりです。
- 各単語をオプションのグループにパックするので、発生する必要はありません[(?:はキャプチャされないグループであり、\ Q ...\Eはエスケープするだけです]
- 各単語を。{0,3}で区切ります(任意の文字、0〜3回出現)
この正規表現はオプションのグループのみで構成されているため常に一致しますが、すべてのオプションのグループに完全に一致する可能性がある場合でも、結果の一致は常に空になります。ただし、結果の一致を後処理したいので、可能な限りキャプチャする必要があります。
正規表現に可能な限りすべてのグループの一致を試行させることはできますか?
または、何かで区切られた複数の単語の検索を実行し、後でどの単語が発生したかをチェックして類似性を計算する方法を知っていますか?
どうもありがとうございます