0

(123,456) 一行で、Javaのパターンを使用して見つけたいと思うかもしれません。私がしたことは次のとおりです。

Pattern pattern = Pattern.compile("\\W");
Matcher matcher = pattern.matcher("(");
while (matcher.find()) {
      System.out.print("Start index: " + matcher.start());
      System.out.print(" End index: " + matcher.end() + " ");
}

入力:This is test (123,456) 出力:Start index: 0 End index: 1 ( なぜ??

4

2 に答える 2

4

\Wどのように一致するかわかりません。\W非単語文字に一致します。

これらのバックスラッシュもエスケープする必要があります。

丸括弧は、デフォルトでグループ化に使用されるため、エスケープする必要があります。

多分あなたが意味した正規表現は

Pattern pattern = Pattern.compile("\\([,\\d]+\\)");
Matcher matcher = pattern.matcher(inputString);

while (matcher.find()) {
    String matched = matcher.group();
    //Do something with it  
}

説明:

\\(     # Match (
[,\\d]+ # Match 1+ digits/commas. Don't be surprised if it matches (,,,,,,)
\\)     # Match )
于 2013-07-13T05:02:06.473 に答える