JAVA使用Matcher / Pattern在字符串中用括号括起来的部分

我正在使用

Matcher m = Pattern.compile("-?\\d+(\\.\\d+)").matcher(strings);
 while(m.find()) {
     double value = Double.parseDouble(m.group());
     sb.append(value);

几行字符串可能看起来像这样

  • 别人的名字9/9/2019 209(20.00)0.00

  • 别人的名字9/8/2019 310 30.00 0.00

  • 另一个人的名字7/20/2019 220(10.00)0.00

通常我会得到类似

的输出

20.000.00

30.000.00

10.000.00

在大多数情况下都可以正常工作,但是我正在尝试查找可能(或可能不)包含(括号)的数字,然后将其包括在内(括号) 我想知道它是否像更改此部分一样简单
("-?\\d+(\\.\\d+)")

我尝试使用 \p{Punct}?在开头和结尾;显然,这没有用。

lyc417402731 回答:JAVA使用Matcher / Pattern在字符串中用括号括起来的部分

尝试在以下正则表达式模式下进行匹配:

// client
socket.on("toALL",function (msg) {
  console.log(msg); 
});

Java代码:

(?<![^\s()])\d+(?:\.\d+)?(?![^\s()])

此打印:

String input = "Someones name 9/9/2019 209 (20.00) 0.00\nSomeones else's name 9/8/2019 310 30.00 0.00\nAnother persons name 7/20/2019 220 (10.00) 0.00";
Pattern r = Pattern.compile("(?<![^\\s()])\\d+(?:\\.\\d+)?(?![^\\s()])");
Matcher m = r.matcher(input);
while (m.find()) {
    System.out.println(m.group(0));
}

以下是正则表达式的解释:

209
20.00
0.00
310
30.00
0.00
220
10.00
0.00
,

简而言之.....这行有效 Matcher m = Pattern.compile("\\(\\d+\\.\\d+\\)").matcher(strings); 如果只想查找不放在方括号中的数字,请用\\ s替换\\)和\\(用\\ s

本文链接:https://www.f2er.com/3046618.html

大家都在问