2009-05-07 9 views
5

私は文字列としてIPアドレスを持っています。 私はこの正規表現を持っています(\d{1-3})\.(\d{1-3})\.(\d{1-3})\.(\d{1-3}) どのように一致するグループを印刷しますか?Javaで正規表現を一致させる

ありがとうございます!

答えて

9
import java.util.regex.*; 
try { 
    Pattern regex = Pattern.compile("(\\d\\{1-3\\})\\.(\\d\\{1-3\\})\\.(\\d\\{1-3\\})\\.(\\d\\{1-3\\})"); 
    Matcher regexMatcher = regex.matcher(subjectString); 
    while (regexMatcher.find()) { 
     for (int i = 1; i <= regexMatcher.groupCount(); i++) { 
      // matched text: regexMatcher.group(i) 
      // match start: regexMatcher.start(i) 
      // match end: regexMatcher.end(i) 
     } 
    } 
} catch (PatternSyntaxException ex) { 
    // Syntax error in the regular expression 
} 
+0

あなたはキャッチする必要はありませんPatternSyntaxException正規表現がハードコードされている(そうであるように)。構文にエラーがある場合は、初めてプログラムを実行するときに見つかるでしょう。 –

+0

@mmyers:習慣の力私は仮定しますが、あなたは正しいです。 –

+0

カウンタは0で始めるべきではありませんか? –

3

あなたが正規表現を行うために、パターンとMatcherのを使用する場合は、あなたがgroup(int group)方法だから、

を使用して、各グループについてのMatcherを求めることができます:

Pattern p = Pattern.compile("(\\d{1-3}).(\\d{1-3}).(\\d{1-3}).(\\d{1-3})"); 
Matcher m = p.matcher("127.0.0.1"); 
if (m.matches()) { 
    System.out.print(m.group(1)); 
    // m.group(0) is the entire matched item, not the first group. 
    // etc... 
} 
関連する問題