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 回答
1

要在一行中完成:

String num = str.replaceAll(".*\\(([\\d,]+)\\).*", "$1");
于 2013-07-13T05:20:03.993 回答