String str = "<input type='image' src='http://p15.freep.cn/p.aspx?u=v20_p15_p_0805240112306914_0.jpg'";
Pattern p = Pattern.compile("src=(.*?)'");
Matcher m = p.matcher(str);
while (m.find()) {
System.out.println(m.group());
}为什么匹配不到啊
Pattern p = Pattern.compile("src=(.*?)'");
Matcher m = p.matcher(str);
while (m.find()) {
System.out.println(m.group());
}为什么匹配不到啊
看下你
*?表示出现0次或多次,不是恰好出现了0次了吗?
Pattern p = Pattern.compile("src='(.*?)'");
Matcher m = p.matcher(str);
while (m.find()) {
System.out.println(m.group(1));
}
为什么这样就匹配不到了呢 Pattern p = Pattern.compile("src=(.*?)'");
Matcher m = p.matcher(str);
while (m.find()) {
System.out.println(m.group(1));
}
public class Test1 {
public static void main(String[] args) {
String str = "<input type='image' src='http://p15.freep.cn/p.aspx?u=v20_p15_p_0805240112306914_0.jpg'";
Pattern p = Pattern.compile("src=(.*)'");
Matcher m = p.matcher(str);
while (m.find()) {
System.out.println(m.group());
}
}
}输出结果src='http://p15.freep.cn/p.aspx?u=v20_p15_p_0805240112306914_0.jpg'
String str = "<input type='image' src='http://p15.freep.cn/p.aspx?u=v20_p15_p_0805240112306914_0.jpg' " +
"src='http://p15.freep.cn/p.aspx?u=v20_p15_p_0805240112306914_0.jpg'";
Pattern p = Pattern.compile("src='([^']*)'");
Matcher m = p.matcher(str);
while (m.find()) {
System.out.println(m.group());
}
}
}表达式不能使用 src=(.*)' 这种样子的,这种是匹配最大的,属于贪婪型的,能匹配得多就多匹配一点。
采用这个,在上面的字符串中并不能正常工作。可以改成 src='(.*?)' 这种样子的,可以进一步优化成 src='([^']*)'
Matcher m = p.matcher(str);
while (m.find()) {
System.out.println(m.group(1));////是group(1),不是group(0);
}
Pattern p = Pattern.compile("src='([^']+)'",Pattern.CASE_INSENSITIVE|Pattern.DOTALL);
用这个正则可以得到你要的结果,