1。在一个字符串里查找两边都是四个字母 中间是四个数字的字符串 输出的时候只输出中间的四个数字  前面的正则我会写 可是输出的时候只输出那四个数字 我不知道应该怎么输出。2。有参数的group和没有参数的group有啥区别?谢谢!

解决方案 »

  1.   

    UP~~~~小店开张,大量视频培训录像,欢迎大家过去踩踩~~购买多多,优惠多多!助你踏上成功之路,拥有这些资料,您必将事半功倍,详细请登陆:http://shop34555988.taobao.com
      

  2.   

    import java.util.regex.*;public class Test {
    public static void main(String args[]) {
    Pattern p = Pattern.compile("[a-zA-Z]{4}(\\d{4})[a-zA-Z]{4}");
    Matcher m = p.matcher("abcd1234hijk");
    if(m.matches()) {
    System.out.println(m.group(1));
    } else {
    System.out.println("Don't match.");
    }
    }
    }
      

  3.   

    matcher.group() = matcher.group(0)
      

  4.   

    这个问题还是没有回答:有参数的group和没有参数的group有啥区别?
    看了星星的回答,又跑出来一个问题  那个find() 方法和matches方法有啥不同?
      

  5.   

    我是查了才上来问的 api根本看不懂
      

  6.   

    String s = "abcd3423defJ";
    String regex = "(?<=[a-zA-Z]{4})\\d{4}(?=[a-zA-Z]{4})";
    Pattern p = Pattern.compile(regex);
    Matcher m = p.matcher(s);
    while(m.find()){
    System.out.println(m.group());
    }
      

  7.   

    matches是匹配整个串,find则不一定
    group的话跟正则式的括号有关,整个匹配的就是group(0),取其中一部份就是看括号的位置,比如楼上的group(1)
    (\\d{4})之所以要加括号就是为了下面输出
      

  8.   

    还有没有明白matches和find有啥区别  哪位好人写一个简单的例子让我看一下下他们的区别啊。。
      

  9.   

    str="abc"
    regex="\\w"
    find的话a、b、c都分别被匹配
    match的话,\\w不能匹配整个串"abc",所以matches返回false,\\w+这样才能match
      

  10.   

    boolean find() 
              Attempts to find the next subsequence of the input sequence that matches the pattern. boolean matches() 
              Attempts to match the entire region against the pattern. 
    注意一个是subsequence,一个是entire region
    楼主要学会看api
      

  11.   

    又有问题了 如果我写str="1aa"
    regex="\\d\\w+"这个时候用find 能匹配的是哪些啊?
    是只有1aa还是什么? 晕了