「java正则连接」正则表达式连接
本篇文章给大家谈谈java正则连接,以及正则表达式连接对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
java正则 提取网页中的连接
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main
{
public static String getHTML(String spec, String charsetName)
{
try
{
URL url = new URL(spec);
HttpURLConnection huc = (HttpURLConnection) url.openConnection();
InputStreamReader isr = new InputStreamReader(huc.getInputStream(), charsetName);
BufferedReader br = new BufferedReader(isr);
StringBuilder builder = new StringBuilder();
String line = null;
while(null != (line = br.readLine()))
{
builder.append(line);
}
br.close();
isr.close();
huc.disconnect();
return builder.toString();
}
catch(Exception e)
{
e.printStackTrace();
}
return "";
}
public static ListString getAttr(String html, String nodeName, String attr)
{
String regex = "(?i)" + nodeName + "\\b[^]*" + attr + "[=\"\'\\s]+([^\"\']*)[\"\']?[^]*";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(html);
ArrayListString list = new ArrayListString();
while(matcher.find())
{
list.add(matcher.group(1));
}
return list;
}
public static void main(String[] args)
{
String html = getHTML("ht和谐tp://zhidao.baidu.com/question/562228126305552124.html?entry=qb_ihome_tag", "UTF-8");
ListString list = getAttr(html, "a", "href");
for(int i = 0; i list.size(); i++)
{
System.out.println(list.get(i));
}
}
}
Java 正则表达式 提取html超链接
你这个错就错在使用了.*
在正则里.*指的是匹配所有字符,而且是匹配优先,对于你这个正则来说到a\\shref=\"(http:为止都是正常的,但后面的.*就会一直匹配到文件的最后,因为对于.*来说是匹配所有字符,所以后面的一切都是匹配的.匹配到最后结尾时,再来进行结尾检查,但你的正则是以/a结尾的,不符合,所以就再回头向回一个个的查,一直查到(.*[^])中的.*匹配.
好了,最后你这个表达式最终的结果其实就是匹配以a\\shref=\"(http: 开头,以[^])/a结尾,中间是任意字符的表达式
(急)如何用java正则表达式捕获超链接,能匹配双引号或单引号.
a.+?href
这里使用 . 通配,? 找最小匹配,就能实现不管a 和href间有什么内容都能匹配到了,有没有样式,相同还是不同的样式,都没问题。
单双引号的问题,可以使用 [\"\'] 这种选择模式,同时使用()括号给括起来,以便在后面引用。
java正则连接的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于正则表达式连接、java正则连接的信息别忘了在本站进行查找喔。