我是Java初学者,遇到一个奇怪的问题,搜索也没明白为什么,请各位大侠不吝指点[code]
Pattern p = Pattern.compile("1");
Matcher m = p.matcher("3122");
System.out.println(m.matches());
[/code]输出:
false为啥呢?不应该匹配到 “3122”的第二个字符吗?谢谢

解决方案 »

  1.   

    Sorry, 代码没贴上来Pattern p = Pattern.compile("1");
    Matcher m = p.matcher("3122");
    System.out.println(m.matches());
      

  2.   

    public class TestZhengZE {
        public static void main(String[] args){
         String reg="^\\d1\\d+$";
         String target="3122";
         System.out.println(target.matches(reg));
        }
    }
    貌似应该这样运用正则表达式吧。\\d是数字一位,然后是1,然后是\\d+ 一个或多个数字。返回 true。
      

  3.   

    你要找字符串中的一个 应该这样
    Pattern p = Pattern.compile("1");
    Matcher m = p.matcher("3122");
    while(m.find()){
    System.out.println(m.group());
    }
      

  4.   

    matcher方法是整个字符串都符合这个正则表达式 才为真
    你应该用find()方法,就可以匹配了
      

  5.   

    正如上面所说的,find()是找到就行了,matcher()是要全部匹配才行
      

  6.   

    matches()是全文匹配的,跟我当时遇到的问题一样一开始我也被函数名骗了
      

  7.   

    Pattern p = Pattern.compile("1"); 
    Matcher m = p.matcher("3122"); System.out.println(m.find());
    这个就是你想要的了