0

我想要一个从价格中提取价值的java中的正则表达式。例如,$40,250.99 我希望表达式输出 40250.99。关键是它只能用正则表达式来完成。我不能做任何字符串连接或其他与字符串相关的操作。我已经尝试了以下但“,”搞砸了一切。基本上 503.34 美元会产生 503.34,但 40,250.99 美元会产生 40

String extractionPattern = "[\\$](\\d+(?:\\.\\d{1,2})?)";
String val = "    Executive billings @ $40,250.99 Starting 2013-01-05 with bi weekly";
Pattern  p = Pattern.compile(extractionPattern);
Matcher m = p.matcher(val);
if (m.find())
     System.out.println("Found a match:" + m.group(1));
4

1 回答 1

0

可能有更好的方法来做到这一点,我将是第一个承认我的正则表达式非常基本的人......

String regExp = "\\$[0-9,\\.]+";
String value = "Executive billings @ $40,250.99 Starting 2013-01-05 with bi weekly";

Pattern pattern = Pattern.compile(regExp);
Matcher matcher = pattern.matcher(value);

// This should result in a list with 1 element of "$40,250.99"
List<String> lstMatches = new ArrayList<String>(5);
while (matcher.find()) {
    lstMatches.add(matcher.group());
}

for (String match : lstMatches) {
    // Strip off the unrqeuired elements...
    match = match.replaceAll("\\$", "");
    match = match.replaceAll(",", "");
    System.out.println(Double.parseDouble(match));
}

您甚至可以使用NumberFormat.getCurrencyInstance().parse(match)将结果解析回 a double,但这会假设输入符合本地要求......

于 2013-09-04T01:24:16.047 回答