Android中的问题匹配正则表达式模式

时间:2010-06-30 03:45:59

标签: java android regex

我正在尝试搜索此字符串:

,"tt" : "ABC","r" : "+725.00","a" : "55.30",

有关:

"r" : "725.00"

这是我目前的代码:

Pattern p = Pattern.compile("([r]\".:.\"[+|-][0-9]+.[0-9][0-9]\")");
Matcher m = p.matcher(raw_string);

我一直在尝试模式的多种变体,并且永远找不到匹配。第二组眼睛会很棒!

3 个答案:

答案 0 :(得分:7)

你的正则表达式确实有效,几乎是正确的

Pattern p = Pattern.compile("\"[r]\".:.\"[+|-][0-9]+.[0-9][0-9]\"");
Matcher m = p.matcher(raw_string);
if (m.find()){
    String res = m.toMatchResult().group(0);
}

答案 1 :(得分:4)

下一行应为:

if ( m.find() ) {
你正在那样做吗?

其他一些问题:您正在使用.来匹配冒号周围的空格;如果它总是应该是空格,那么你应该使用+(一个或多个空格)或\s+(一个或多个空格字符)。另一方面,数字之间的点应该与文字.匹配,所以你应该转义它:\.当然,因为这是一个Java字符串文字,你需要转义反斜杠:\\s+\\.

您不需要r周围的方括号,如果您不想匹配数字前面的|,则应将[+|-]更改为{{ 1}}。

虽然我提到的其中一些问题可能导致误报,但是没有一个会阻止匹配有效输入。这就是为什么我怀疑你实际上没有通过调用[+-]来应用正则表达式。这是一个常见的错误。

答案 2 :(得分:0)

首先尝试逃避点符号:... [0-9]+\.[0-9][0-9] ...
因为点符号匹配任何字符...

第二件事:[+|-]定义一系列字符,但它是强制性的......
试试[+|-]?

阿尔