Notepad++ を使用して、任意の順列で同じ行にある複数の値を見つけるにはどうすればよいですか?

Notepad++ を使用して、任意の順列で同じ行にある複数の値を見つけるにはどうすればよいですか?

私は Notepad++ を使用しており、同じ行で複数の値を検索する方法を見つけようとしています。値の順序がわからないため、正規表現検索は現在機能していません。

たとえば、3 つの特定の値を持つコード行を検索したいとします。.*値の順序を知っている必要があるため、正規表現検索での使用は機能しません。値の順序を知らなくてもこれらの行を検索することは可能ですか?

各行には、おそらく 30 個の異なるタグを持つ取引ログがあります。 を検索したいのですが、35=D, EUR/USD, 150=83 つの値がすべて存在するエントリのみを検索したいのです。

私が遭遇する問題は、これらのタグの順序が保証されていないため、以下で使用する正規表現検索で必ずしも必要なエントリが見つからないことです。

35=D.*EUR/USD.*150=8

答え1

使用先のことを考えるはるかに効率的であり、複雑さを増すことなく任意の数の変更を処理できます。

  • Ctrl+F
  • 「何を見つけるか」:^(?=.*\b35=D\b)(?=.*\bEUR/USD\b)(?=.*\b150=8\b).+$
  • チェック"マッチケース"
  • チェック"包み込む"
  • チェック"正規表現"
  • チェックを外す .改行に一致」
  • Find All in Current Document

説明:

^               # Beginning of line
  (?=           # Start positive lookaead, make sure we have after:
    .*          # 0 or more any character but newline
    \b          # Word boundary to be sure not matching 135=DATA
    35=D        # Literally
    \b          # word boundary
  )             # End lookahead
  (?=           # Start positive lookaead, make sure we have after:
    .*          # 0 or more any character but newline
    \b          # Word boundary
    EUR/USD     # Literally
    \b          # Word boundary
  )             # End lookahead
  (?=           # Start positive lookaead, make sure we have after:
    .*          # 0 or more any character but newline
    \b          # Word boundary
    150=8       # Literally
    \b          # Word boundary
  )             # End lookahead
  .+            # One or more any character but newline
$               # End of line

画面キャプチャ:

ここに画像の説明を入力してください

答え2

3 つの文字列がすべて存在する行のみを一致させるには、代替演算子を使用してパターン|をグループ化し、すべての可能な順列の正規表現を構築します。(...)

(35=D.*EUR/USD.*150=8)|(35=D.*150=8.*EUR/USD)|(EUR/USD.*150=8.*35=D)|(EUR/USD.*35=D.*150=8)|(150=8.*35=D.*EUR/USD)|(150=8.*EUR/USD.*35=D)

改行を追加した読みやすいバージョン:

(35=D.*EUR/USD.*150=8)|
(35=D.*150=8.*EUR/USD)|
(EUR/USD.*150=8.*35=D)|
(EUR/USD.*35=D.*150=8)|
(150=8.*35=D.*EUR/USD)|
(150=8.*EUR/USD.*35=D)

35=Dこれは、、およびEUR/USD(およびその間のテキスト)の組み合わせが150=8存在するすべての行に一致します。このサンプル テキストでは、最後の 3 行のみが一致します ([現在のドキュメント内のすべてを検索] ボタン)。

some text 35=D
some text EUR/USD more text 150=8
some text 35=D more text EUR/USD more text 150=8
some text EUR/USD more text 35=D more text 150=8 more text
some text 150=8 more text EUR/USD 35=D more text


スクリーンショット

関連情報