java关于html匹配的正则问题

java关于html匹配的正则问题,第1张

你不要一行一行的匹配,你把这个网页全部读取下来再去通过正则匹配就对了。

URL url=new URL("http://www.weather.com.cn:80/weather/101210101.shtml")

BufferedReader bufIn=new BufferedReader(new InputStreamReader(url.openStream()))

StringBuilder builder = new StringBuilder()

String regex="<table.*"

String line=null

Pattern p=Pattern.compile(regex,Pattern.DOTALL)

while((line=bufIn.readLine())!=null){

builder.append(line)

}

line = builder.toString()

Matcher m=p.matcher(line)

//char[] buf=

while(m.find()){

//将符合规则的数据存储到集合中

list.add(m.group())

}

for(String list3 : list){

System.out.println(list3)

}

你这个错就错在使用了.*

在正则里.*指的是匹配所有字符,而且是匹配优先,对于你这个正则来说到<a\\shref=\"(http:为止都是正常的,但后面的.*就会一直匹配到文件的最后,因为对于.*来说是匹配所有字符,所以后面的一切都是匹配的.匹配到最后结尾时,再来进行结尾检查,但你的正则是以</a>结尾的,不符合,所以就再回头向回一个个的查,一直查到(.*[^>])中的.*匹配.

好了,最后你这个表达式最终的结果其实就是匹配以<a\\shref=\"(http: 开头,以[^>])</a>结尾,中间是任意字符的表达式

String 有个api replaceAll 就是用正则来替换字符串的

String str = "aadf width:xxpxheight:xxpxfdsaf"

str.replaceAll("width:\\w+height:\\w+", "")


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/6098931.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-14
下一篇 2023-03-14

发表评论

登录后才能评论

评论列表(0条)

保存