2012-03-21 31 views
0

私の小さな問題の解決策を見つける必要があります。オプションの文字列正規表現を一致させる

私はメッセージなど

ステータスがあります:OK

または

ステータス:ERR |次のメッセージ

が、それは、オプション+ "ステータス" のための正規表現を作成することが可能メッセージですもし存在すれば?

おかげで最初のグループでは、これはステータスコードを捕捉する

+0

式は何ですか?ステータスコードを抽出しますか? –

+0

はい、オプションのメッセージ – Rene

+0

これまでに何を試しましたか? http://regular-expressions.infoは始めるのに適しています。 –

答えて

4

あなたはこのようなものを使用することができます

/^Status:\s*([A-Z]+)(?:\|([^$]*))?$/ 

これは、すべてのデータと一致し、第1の要素としてOKまたはERRを返し、2番目の要素としてだけメッセージを。

追加情報(?:表記(\ |の前)は、 "非表示"のグループです。つまり、グループはフェッチしません。

+0

これは完全に機能します!ありがとうございます:-) – Rene

+0

Whoa、キャプチャしていないグループ内のキャプチャグループ?ニース:P –

+0

ありがとうございます。それは強力なツールになります:-) – mikaelb

0
/Status: (\w+)(\|(.+))?/ 

多く

レネ(OK、ERR)、および第三のグループにメッセージ(文字列中に存在する場合)。

+0

ほぼ完璧:-) – Rene

+0

しかし、 "|" ? – Rene

+0

正規表現の '\ |'は、 "|"それはあなたが与えた文字列の状態コードとメッセージを分けます。文字列に実際に "|"が含まれないことを意味しますか?文字? –

関連する問題