テキスト内に「W foo X bar Y baz Z」という文字列を検索したいとします。 W、X、Y、Zは重要ではないセパレータであり、それらを検索してはいけません。 foo、bar、bazが私が興味を持っている言葉です。その順序はそれほど重要ではありません。 私はテキストの中に私の必要な言葉がどのように「良い」かを知りたい。正規表現を強制的に任意のグループに一致させる
- パックオプションのグループ内の各単語、それは を[(発生することが必要とされていません:
私は、次の
(?:\Qfoo\E)?.{0,3}(?:\Qbar\E)?.{0,3}(?:\Qbaz\E)?
私の推論をしようとしていることはありますか?非です\ Q ... \ Eはエスケープしています]
- 。{0,3}(各文字は0-3回発生)
この正規表現は、オプションのグループのみで構成されているため常に一致しますが、は一致していますが、すべてのオプショングループと完全に一致していても一致するものは常にです。 しかし、結果のマッチを後処理したいので、できるだけキャプチャする必要があります。
Regexにすべてのグループを可能な限り一致させるように強制できますか?
また、いくつかの単語の検索を何らかの方法で行い、後でどちらの単語が類似点を計算するのかを確認する方法はありますか?
は、私はあなたが単純に正規表現を使用して問題に取り組むためのいくつかの困難を持っていると思う非常に
まあ、問題があります。まず、法的入力は何ですか?あなたの "必須の単語"はすべてオプションで、 '。{0,3}'を2回使うとパターンは '' 1bar2 "'を含む6文字にマッチします。 )。すべてのグループは本当にオプションですか?セパレータをよりよく定義できますか?まず、セパレータとその前のグループの間のリンクを作成することから始めます。たとえば、 '(?:foo。{0,3})?(?:bar。{0,3})?(?: baz )?'あなたが明確にしてもっと多くの例を挙げることができるなら、もっとうまくいくことができます。 – Kobi
'? 'マッチングのためにどのような正規表現方法を使用しますか? – fge