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。