import java.util.Scanner;public class TestSpace 
{
public static void main(String[] args) 
{
Scanner scan = new Scanner(System.in);
String hasread = scan.next();
String pat= "^\\d\\s\\d";//空格\\x20或者“ ”都不行,我试过了
if(hasread.matches(pat))
{
System.out.println(hasread);
}
else
System.out.println("what's wrong?");
}
}
我只是想匹配空格,总不能成功,谁能教我为什么我运行总是what's wrong?

解决方案 »

  1.   


    String hasread = scan.next();这里得到的肯定没空格啦,因为每个next得到的数据相当于用空格隔开的。我觉得最好是把整行都读下来。
    至于空格的正则表达是\s没错。package com.ricky.www;import java.util.Scanner;
    import java.util.regex.Pattern;
    import java.util.regex.Matcher;public class Test{
    public static void main(String[] args){
    String format = "number separate number";
    System.out.println("input the message like this: " + format);
    Scanner input = new Scanner(System.in);
    String message = input.nextLine();

    String regex = "\\d+\\s+\\d+";
    Pattern pattern = Pattern.compile(regex);
    Matcher matcher = pattern.matcher(message); if(matcher.find()){
    System.out.println(message);
    }else{
    System.out.println("what's wrong?");
    }
    }
    }
      

  2.   


    package com.ricky.www;import java.util.regex.Pattern;
    import java.util.regex.Matcher;public class Test1{
    public static void main(String[] args){
    String regex = "^\\d{3}[- ]\\d{4}[ -]\\d{11}$";
    Pattern pattern = Pattern.compile(regex);
    String phone = "080 0736 13786238566";
    Matcher matcher = pattern.matcher(phone); System.out.println(matcher.matches());
    }
    }没什么问题啊~而且我们写正则的时候如果要在一个metacharacter里放-的话最好要放到首位也就是[-other]的形式
      

  3.   

    String regex = "\\d+[\\s|-]+\\d+";
    匹配空格或者-
      

  4.   

    非常谢谢,我会补分的,原来出在Scanner上