2017-01-17 7 views
0

明らかに、Javaの正規表現ライブラリまたは正規表現については、あまりにも分かりません。私の顔にJava正規表現抽出グループが存在する場合は、そのグループを抽出します

String text = "asdf 2013-05-12 asdf"; 

この正規表現は爆発:この文字列の

String REGEX_FORMAT_1 = ".+?([0-9]{4}\\s?-\\s?[0-9]{2}\\s?-\\s?[0-9]{2}).+"; 

Matcher matcher_1 = PATTERN_FORMAT_1.matcher(text); 
if(matcher_1.matches()) { 
    String matchedGroup = matcher_1.group(); 
    ... 
}  

意味的にこれは私には理にかなっているが、私は完全に何かを誤解してきたようです。正規表現はregex101のような一部のオンライン正規表現エディタでうまく動作しますが、他の正規表現エディタではうまく動作しません。誰かが私になぜ2013-05-12を含むキャプチャグループを取得できないのか理解してもらえますか?

+2

使用 '.group(1)' – 4castle

+0

あなたは 'PATTERN_FORMAT_1を使用しているかもしれないので、代わりに' 'REGEX_FORMAT_1'の? – alfasin

答えて

3

group()group(0)に相当し、一致する文字列全体を返します。最初に一致するグループを引き出すには、group(1)を使用します。

String text = "asdf 2013-05-12 asdf"; 
String regex = ".+?([0-9]{4}\\s?-\\s?[0-9]{2}\\s?-\\s?[0-9]{2}).+"; 
Matcher matcher = Pattern.compile(regex).matcher(text); 

if (matcher.matches()) { 
    String matchedGroup = matcher.group(1); 
    System.out.println(matchedGroup); 
} 

出力:

2013-05-12 
+0

ありがとう!私はちょうど試行錯誤でそれを指摘し、私自身の質問に答えるつもりでしたが、あなたは私にそれを打ちました。どうもありがとう! – magnusson

関連する問題