Java 正则表达式:在字符串中查找模式

Java 正则表达式:在字符串中查找模式,java,regex,string,Java,Regex,String,有人可以解释如何在java中使用正则表达式。我有几个字符串3:-N,'V-g'u fi''L总计:13-70 0-1'I和r_。_A_,1总计:$13.70 I-T«。我需要提取总计:后面加和:预期输出总计的Ex:13-70,总计:$13.70。 我尝试使用以下代码…但据我所知,它不会捕获符号,例如$- 你可以用 Total:\s*\$?\d+(?:[-.]\d+)? 看 细节 总计:-文字子字符串 \s*-0+空格 \$?-可选的$char \d+-1+位 ?:[-.]\d+?-一个可选的非

有人可以解释如何在java中使用正则表达式。我有几个字符串3:-N,'V-g'u fi''L总计:13-70 0-1'I和r_。_A_,1总计:$13.70 I-T«。我需要提取总计:后面加和:预期输出总计的Ex:13-70,总计:$13.70。 我尝试使用以下代码…但据我所知,它不会捕获符号,例如$-

你可以用

Total:\s*\$?\d+(?:[-.]\d+)?

细节

总计:-文字子字符串 \s*-0+空格 \$?-可选的$char \d+-1+位 ?:[-.]\d+?-一个可选的非捕获组,与下列事件的1或0次匹配: [-.]-或者-或者。 \d+-1个或多个数字。 在Java中:

Pattern p = Pattern.compile("Total:\\s*\\$?\\d+(?:[-.]\\d+)?");
如果需要提取值,请在需要提取的模式周围使用捕获组,例如\$?\d+?:[-.]\d+?,然后访问组值,如

Pattern p = Pattern.compile("Total:\\s*(\\$?\\d+(?:[-.]\\d+)?)");
Matcher m = p.matcher(result);
while (m.find()) {
     System.out.println(m.group(1));
}

请尝试Pattern.compileTotal:\\s*\\$?\\d+?:[-.]\\d+?,请参阅。它将捕获这些符号,您只需转义它们即可
Pattern p = Pattern.compile("Total:\\s*(\\$?\\d+(?:[-.]\\d+)?)");
Matcher m = p.matcher(result);
while (m.find()) {
     System.out.println(m.group(1));
}