2011-05-16 8 views
3

regexを使ってjavaの文字列から日付やその他の情報を取得したいと思います。私のパターンは次のように正規表現内のグループとして外側のカッコだけを取り込みます

Iグループ、

"((date_variation_1 | date_variation_2) (some_other_info)) " 

そして今、私はこのようなマッチした文字列を抽出したい、
GROUP0 - 全試合
group1に - 日付
グループ2 - いくつかの他の情報

私の問題は、date_variation_1、date_variation_2、およびsome_other_infoに括弧を内部的に使用する必要があり、それらの括弧もグループディバイダとして扱われることです。

括弧ではなく、外部グループディバイダとして他の特別なチャーターを定義するのは簡単ですか?

date_variation_1:

"(((?:Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday|Tues|Thur|Thurs|Sun|Mon|Tue|Wed|Thu|Fri|Sat))" // Day Of Week 1 
         + "(\\s+)" // White Space 1 
         + "((?:[0]?[1-9]|[1][012])[-:\\/.](?:(?:[0-2]?\\d{1})|(?:[3][01]{1}))[-:\\/.](?:(?:\\d{1}\\d{1})))(?![\\d])" // MMDDYY 1 
         + "(\\s+)" // White Space 2 
         + "((?:(?:[0-1][0-9])|(?:[2][0-3])|(?:[0-9])):(?:[0-5][0-9])(?::[0-5][0-9])?(?:\\s?(?:am|AM|pm|PM))?))"; // HourMinuteSec 1 
+0

また、Javaでは、すべてを一致させるために外側のかっこは必要ありません。 'group(0)'は常に式全体と一致する文字列を取得します。 –

+0

@ palo-ebermann私はそれを知っていますが、外側のカッコを正規表現の特定の部分に一致させたいと思います。これらの部分のかっこもグループとして扱われます。多分あなたは私の質問をちょっと誤解しました。 – carloscloud

答えて

5

あなたは非キャプチャグループを定義するために(?:yourGroupHere)を使用することができます。

関連する問題