正则表达式在美元符号后抓住数字

时间:2012-12-06 03:29:01

标签: android regex

我有动态字符串,有时会有价格,有时不会。它的craigslist所以实际上没有设置格式可以有逗号,短划线等。以下是典型字符串的一些示例:

  

Xbox 360(黑色)精英控制台120GB(伊利诺伊州梅森城)200美元

     

$ 200 2013 North Trail Camper(RT 202.曼彻斯特,缅因州)$ 224 /月。

     

Snowmobile自行车拖车(Winthrop / Augusta)每月40美元

     

“伟大的圣诞礼物”XBox 360吉他英雄(Springfied)$ 80

我正在尝试将字符串拆分为标题,位置和价格。我可以抓住位置:

Pattern p = Pattern.compile("\(([^]*)\)");
Matcher m = p.matcher(title);

无法弄清楚如何将标题和价格分开。任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:2)

要在使用$之后获取号码:\$[0-9]+正则表达式。

答案 1 :(得分:0)

我个人会用:

 \$[-0-9.,]+[-0-9.,a-zA-Z]*\b

这将需要相当多的非数字,但它也会像负值,$1,000$1mil之类的东西。最后的\b将确保它在空格或新线之前尽可能地全球化。

答案 2 :(得分:0)

要获取$之后的号码,请使用\$(\d+)正则表达式。

Regex Demo

请注意捕获括号,可以通过m.group(1)访问所需的值。

Java代码中的双转义反斜杠也是如此。

请参见下面的代码段

Pattern p = Pattern.compile("\\$(\\d+)");
Matcher m = p.matcher(title);
String output = "";
if (m.find()) {
    output = m.group(1);
}