2009-03-25 19 views
4

テキストファイルの場合、 "BEAM"と "FILE PATH"で始まる文字列に一致させたいと思います。私はそれらを別々にマッチさせるのであれば、複数の正規表現を1つの正規表現に連結

^BEAM.*$ 
^FILE PATH.*$ 

を使用していたでしょう。しかし今、私はそれらの2つの一致するパターンを1つのパターンに連結しなければなりません。

これはどのように行うのですか?

+0

正規表現として使用しているエンジン/言語が実装間で微妙に異なることに注意することが重要です。 –

答えて

8

パイプ/バー文字は、通常、正規表現で「または」を表します。試してみることができます:

^(BEAM|FILE PATH).*$ 
1

上記の投稿がうまくいかない場合は、()と|をエスケープしてみてください。あなたが働くものを見つけるまで、さまざまな方法で。いくつかの正規表現エンジンは(シェルがあまりにも特殊文字を探します)あなたはシェルで試合を実行している場合は特に、(非特殊文字対特別な)異なったこれらの文字を扱う:

  • ^\(BEAM|FILE PATH\).*$
  • %\(BEAM\|FILE PATH\).*$
  • など
4

回答は正解ですが、あなたは正規表現に冗長性があるかもしれません。

  • ^手段がライン
  • (BEAM|FILE PATH)の開始と一致 - 文字列「BEAM」または文字列「ファイルパス」を意味
  • .*はすべて
  • $手段で何かが終わりを一致させること行の

実際には、あなたが言っているのは、beginniあなたは何が最後に気にしないので、行のng。

^(BEAM|FILE PATH) 

が、この減少は、有効ではありません2例があります:あなたがこれを行うことができます

  1. あなたはマッチした文字列といくつかをやっている場合、あなたは全体のラインを合わせたいですデータを他のものに渡す。

  2. 文字列全体ではなく文字列全体を一致させる正規表現機能を使用しています。異なる正規表現の関数またはメソッドを選択することで、これを解決できることがあります。たとえば、Pythonではmatchの代わりにsearchを使用します。

関連する問題