0

ファイルの内容が次の場合:ABC DEF GHI JKL MNO PQR STU VWXYZ、このファイルを単純な正規表現で検索して、次が含まれているかどうかを確認するにはどうすればよいABCですDEFか?

次の2つのシナリオが必要です。

  1. ABCDEF[true]
  2. BACABC[false]
  3. DEFABC[true]
  4. CDEABC[false]

最終的に、私は何千ものファイルを検索して、それらに2つの単語が含まれているかどうかを確認しています。1つは簡単に一致できますが、2つは一致しません。

アップデート

また、複数の行で機能するには、この正規表現が必要です。したがって、最初の文字列が1行目にあり、2番目の文字列が100行目にある場合でも、一致する正規表現が必要です。テキストエディタで正規表現にブースト構文を使用しています:SublimeText2。

アップデート2

答え:(?s)(abc.*def|def.*abc)

4

3 に答える 3

3

交互に使用して、文字列をいずれかの順序で、何かで区切ってチェックします。

ABC.*DEF|DEF.*ABC
于 2013-03-22T15:45:01.037 に答える
1

個別の単語を検索する場合は、単語の境界を使用することが重要です。

(\bABC\b.*?\bDEF\b|\bDEF\b.*?\bABC\b)

それ以外の場合は一致しますABCDEFまたはABC DEFINITION

于 2013-03-22T15:50:01.117 に答える
1
grep -P  -l -z -i 'abc[\w\s]*def|def[\w\s]*abc' *

上記のようなものを使用できるはずです。

-Pは、PCREの高度な正規表現機能に必要です。

-lは、一致するファイルを名前でリストします。

-zは、一致の行末を無視します。

-大文字と小文字を区別しないようにします。

ただし、ニーズの詳細によっては、少しやり過ぎかもしれません。

同様に、grepを使用するPCREスタイルの正規表現に固有です。

他のツールでは、EOL文字などを抑制する必要がない場合があります。

単語の境界を考慮していません。

于 2013-03-22T15:57:01.173 に答える