2019-09-11
受别人例子的影响,以为group就是匹配所有满足条件的子串
if (m.find( )) { System.out.println("####" + m.groupCount()); for(int i=0;i<m.groupCount();i++) { System.out.println( m.group(i+1)); } } else { System.out.println("NO MATCH"); }
后来才知道,group对应你的正则ge表达式里面有几个(),因为我一直只用了一个,所以返回的groupCount一直为1。所以新的写法是
while(m.find( )) { System.out.println("---------"); System.out.println( m.group(1)); }
还有,我的源串里面因为是多行的,所以在匹配的时候,一旦跨行就匹配不上了(正则表达式是"<script>(.*?)</script>"),2种解决办法,一种是把源串
replace(" ", "")
第二种是:加一个flag标识,把点号也可以替换换行符
Pattern p = Pattern.compile("<script>(.*?)</script>", Pattern.DOTALL);