日期:2014-05-20  浏览次数:20726 次

一个简单的问题, java正则表达式, 提取字符
字符串是:
“<a href=\"/watch?v=o6sdfIyVM\" rel=\"nofollow\" onclick=\"_hbLink('ReR<a href=\"/watch?v=o328djdVb\" rel=\"nofollow\" onclic<a href=\"/watch?v=sdfgVa0FIyVs\" rel=\"nofollow\" onclick=\"_hbLink('ReR<a href=\"/watch?v=38dkj0FIydM\" rel=\"nofollow\" onclic”


想提取出来
o6sdfIyVM
o328djdVb
sdfgVa0FIyVs
38dkj0FIydM

这个v=后面的字符。



Java code
public static void main(String[] args) {
        Pattern p = Pattern.compile("watch\\?v=.*\"\\s* rel=");
        String s = "上面的字符";
        Matcher match = p.matcher(s);
        if ( match.find() ) {
            System.out.println(match.group(0));
            System.out.println(match.group(1));
        }
}


但是不行, 请高手帮我一下。

------解决方案--------------------
Java code
  public static void main(String[] args) {
    String s = "<a   href=\"/watch?v=o6sdfIyVM\"   rel=\"nofollow\"   onclick=\"_hbLink('ReR <a   href=\"/watch?v=o328djdVb\"   rel=\"nofollow\"   onclic <a   href=\"/watch?v=sdfgVa0FIyVs\"   rel=\"nofollow\"   onclick=\"_hbLink('ReR <a   href=\"/watch?v=38dkj0FIydM\"   rel=\"nofollow\"   onclic";
    Pattern p = Pattern.compile("watch\\?v=(.*?)\"");
    Matcher match = p.matcher(s);
    while ( match.find() ) {
//        System.out.println(match.group(0));
        System.out.println(match.group(1));
    }
  }

------解决方案--------------------
楼主那个哪来的group(1)啊

"(?<=\\"watch\\?).*?(?=\\")"
match.group();