2009-04-13 14 views
1

私はJavaの正規表現の問題を理解しようとしています。これは1.6ですが、私は重要ではないと思います。とにかく...Java Regexのグループ化の問題

私は基本的に私はに至るまで数次のすべてを抽出したい次...

"Blah yadda yidda 44-Barack Obama, this that the other" 

または

"Something here, there 22-Hyphenated-example. Hi there folks" 

のようないくつかの入力データを持っているつもりです末尾の句読点。私が抽出する二つの例入力...

"Barack Obama" 

"Hyphenated-example" 

では私は非常に私が使用する必要があるパターンを得ることができません。私が得ることができる最も近いです。この...、しかし、私に与え

"[0-9]{1,2}-([A-Z -]*\\b*)" 

...

"44-Barack Obama" 

私のコードがある...

Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE); 
Matcher matcher = pattern.matcher("Blah yadda yidda 44-Barack Obama, this that the other"); 
if (matcher.find()) 
    // This gives me "44-Barack Obama" but I want "Barack Obama". 
    System.out.println(matcher.group()); 

興味深いことに、私は」 QuickREx Eclipseプラグインを使用してこのパターンをテストし、適切な値を返します。ただし、上記のコードを実行すると、実行されません。

アイデア?

答えて

4

matcher.group(1)の結果を使用し、matcher.group()を使用しないでください。 2番目の形式は、以前のmatchesまたはfindメソッドでマッチしたものすべてを返します。最初の形式は、正規表現内の個々のキャプチャグループにアクセスするために使用されます。

+0

おっと! * ENTIRE * Javadocを読むことが重要だと思います! エリクソンが賞を獲得しました。 1分も経たないうちに! – SteveT