java正则表达式

  
  
  
  
  1.   Pattern   pattern1Pattern.compile(".*\\{{1}lat:\"(\\d+\\.\\d*)\",lon:\"(\\d+\\.{1}\\d*)\",.*");  //new 一个patten类,compile
  2.  //建一个matcher类,内容为要匹配的字符串       
  3. Matcher matcher1 = pattern1.matcher("[{lat:\"123213.1\",lon:\"33.1\",ttttttwwwww}{lat:\"123213.2\",lon:\"332.1\",ttttttwwwww}"); 
  4.        matcher1.find(); //find 后才 可以调用下面的start,end方法,且只能find一次
  5.          System.out.println(matcher1.start(1)+"|"+matcher1.start(2) ); //组的 开始 ,一开始不写参数结果是0
  6.         System.out.println(matcher1.end(1)+"|"+matcher1.end(2) ); //组的结束位置
  7.          System.out.println(matcher1.group()+"|"+matcher1.group()); //参数为空输出全部字符串
  8. //        if (matcher1.find()){ 
  9. //        System.out.println(matcher1.group(1)+"|"+matcher1.group(2)); //输出group
  10. //        } 
  11.         matcher1.replaceFirst("replace to what"); //matcher类的方法,看参数名就知道是什么意思了
  12.  

以上是我最近学习java的正则表达式敲的代码,目的是找出形如

[{lat:\"123213.1\",lon:\"33.1\",ttttttwwwww}{lat:\"123213.2\",lon:\"332.1\",ttttttwwwww}

中的lat和lon的值,显示结果是:

 

  
  
  
  
  1. 46|61 
  2. 54|66 
  3. -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这个链接有很多内容,虽然有些我试了一下没成功,但是大部分还是可以的

你可能感兴趣的:(java,职场,休闲,java怎则表达式)