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

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

,"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); 

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

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

 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); } 

下一行应为:

 if ( m.find() ) { 

你在做吗?

其他一些问题:你正在使用. 匹配结肠周围的空间; 如果它总是应该是空格,你应该使用+ (一个或多个空格)或\s+ (一个或多个空格字符)。 另一方面,数字之间的点应该与文字匹配. ,所以你应该逃避它: \. 当然,由于这是一个Java String文字,你需要转义反斜杠: \\s+\\.

你不需要r周围的方括号,如果你不想匹配| 在数字前面你应该改变[+|-][+-]

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

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

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

阿尔class。