String str = "<a href=\"http://www.abc.com\">12</a><a href=http://www.abc.com>123</a><a href=\"http://www.abc.com\" target=''>12</a>"; Pattern p = Pattern.compile("href=[\\\"]?(.*?)[\\\"]?[\\s>]"); Matcher m = p.matcher(str); while (m.find()) { System.out.println(m.group(1)); }
你举个例子,光是href的话1楼的方法可以~
同意 1楼的做法 href 的情况如此
正在学正则,弄了老半天才出来,.........呵呵,向楼上的几位学习....注:是看了老紫竹的改的,........import java.util.regex.Matcher; import java.util.regex.Pattern;public class Absf { public static void main(String[] args) { String str = "<a HREF=\"http://www.aasd.com\">12</a><a href=http://www.abc.com>123</a> <a href=\"http://www.woadfw.com\" target=''>12</a>"; String pattern ="<\\s*a\\s*href\\s*=\\s*[\"]?([^\"|^<]*)[\"]?>?[\\s>]"; System.out.println(pattern); Pattern p = Pattern.compile(pattern, Pattern.CASE_INSENSITIVE); //有可能href是大写 Matcher m = p.matcher(str); while (m.find()) { System.out.println(m.group(1)); } } }
Pattern p = Pattern.compile("href=[\"]?(.*?)[\"]?[\\s>]" ,Pattern.CASE_INSENSITIVE|Pattern.DOTALL); Matcher m = p.matcher(html); while (m.find()) { System.out.println(m.group(1)); }
感谢各位。顺便问下大家,1楼老紫竹的表达式Pattern p = Pattern.compile("href=[\\\"]?(.*?)[\\\"]?[\\s>]");中,为什么同样是转义,前面两个是3个\\\ 后面一个s前却只有2个\\ 而且我平时用正则的时候 还有时是只要一个的。 谢谢
Pattern p = Pattern.compile("href=[\\\"]?(.*?)[\\\"]?[\\s>]");
Matcher m = p.matcher(str);
while (m.find()) {
System.out.println(m.group(1));
}
import java.util.regex.Pattern;public class Absf { public static void main(String[] args) {
String str = "<a HREF=\"http://www.aasd.com\">12</a><a href=http://www.abc.com>123</a> <a href=\"http://www.woadfw.com\" target=''>12</a>";
String pattern ="<\\s*a\\s*href\\s*=\\s*[\"]?([^\"|^<]*)[\"]?>?[\\s>]";
System.out.println(pattern);
Pattern p = Pattern.compile(pattern, Pattern.CASE_INSENSITIVE); //有可能href是大写
Matcher m = p.matcher(str);
while (m.find()) {
System.out.println(m.group(1));
} }
}
Pattern p = Pattern.compile("href=[\"]?(.*?)[\"]?[\\s>]" ,Pattern.CASE_INSENSITIVE|Pattern.DOTALL);
Matcher m = p.matcher(html);
while (m.find()) {
System.out.println(m.group(1));
}
而且我平时用正则的时候 还有时是只要一个的。
谢谢