解决方案 »

  1.   

    需要先进行查找匹配,才能使用group方法。
    其中正则让我做了点修改,在每个匹配点上加了分组,也就是()包裹,用于提取更多信息。
    具体代码如下: Pattern linkPattern = Pattern.compile("\\[(.*?)\\]\\((.*?)\\)");
    Matcher linkMatcher = linkPattern
    .matcher("[link](www.baidu.com) and [link](www.youku.com)");
    while(linkMatcher.find()){
    String result = linkMatcher.group();
    System.out.println(result);
    System.out.println(linkMatcher.group(1));
    System.out.println(linkMatcher.group(2));
    }
      

  2.   

    在使用group时一定要调用find(),否则会产生编译错误,代码如下:
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    public class ZhengZe {
    public static void main(String[] args) {
     Pattern linkPattern = Pattern.compile("\\[.*?\\]\\(.*?\\)");
         Matcher linkMatcher = linkPattern.matcher("[link](www.baidu.com) and [link](www.youku.com)");
         while(linkMatcher.find())
         {
         String result = linkMatcher.group();
         System.out.println(result);
         }

    }
    }结果:
    [link](www.baidu.com)
    [link](www.youku.com)
      

  3.   

    要想只得到一个匹配结果,就对正则进行分组,然后用group(0)表示全部,group(1)只匹配第一个分组,group(2)只匹配第二个分组……以此类推
      

  4.   

    Pattern linkPattern = Pattern.compile("\\[.*?\\]\\(.*?\\)");
    Matcher linkMatcher = linkPattern.matcher("[link](www.baidu.com) and [link](www.youku.com)");
    if(linkMatcher.find()){
    String result = linkMatcher.group(0);
    System.out.println(result);
    }
    结果是[link](www.baidu.com),正是贪婪匹配的结果。