- Pattern pattern1= Pattern.compile(".*\\{{1}lat:\"(\\d+\\.\\d*)\",lon:\"(\\d+\\.{1}\\d*)\",.*"); //new 一个patten类,compile
- //建一个matcher类,内容为要匹配的字符串
- Matcher matcher1 = pattern1.matcher("[{lat:\"123213.1\",lon:\"33.1\",ttttttwwwww}{lat:\"123213.2\",lon:\"332.1\",ttttttwwwww}");
- matcher1.find(); //find 后才 可以调用下面的start,end方法,且只能find一次
- System.out.println(matcher1.start(1)+"|"+matcher1.start(2) ); //组的 开始 ,一开始不写参数结果是0
- System.out.println(matcher1.end(1)+"|"+matcher1.end(2) ); //组的结束位置
- System.out.println(matcher1.group()+"|"+matcher1.group()); //参数为空输出全部字符串
- // if (matcher1.find()){
- // System.out.println(matcher1.group(1)+"|"+matcher1.group(2)); //输出group
- // }
- matcher1.replaceFirst("replace to what"); //matcher类的方法,看参数名就知道是什么意思了
以上是我最近学习java的正则表达式敲的代码,目的是找出形如
[{lat:\"123213.1\",lon:\"33.1\",ttttttwwwww}{lat:\"123213.2\",lon:\"332.1\",ttttttwwwww}
中的lat和lon的值,显示结果是:
- 46|61
- 54|66
- -1|[{lat:"123213.1",lon:"33.1",ttttttwwwww}{lat:"123213.2",lon:"332.1",ttttttwwwww}
另外,网上有很多把第一段代码的第8行if语句写的while语句,试了一下,发现while循环并不能把字符串里面匹配的数据一次输出来,总是只能输出最后一个匹配到的串,可能原因是pattern的flag问题,但是我从默认到Pattern里面所有常量都试过了,也只匹配了一次,都想疯了,
".*\\{{1}lat:\"(\\d+\\.\\d*)\",lon:\"(\\d+\\.{1}\\d*)\",.*"原因是这里写了.*,就注定它只能匹配一个串
}
即可啦
如果前面写了.*就只能匹配最后一个,后面写了.*只能匹配第一个,如果两边都有,则和前面加的功能相同,应该是这个问题!暂时就不细究了
希望清楚原因的人给我说一下,http://www.24xuexi.com/w/2011-06-09/91632.html这个链接有很多内容,虽然有些我试了一下没成功,但是大部分还是可以的
















