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?
13 个解决方案
#1
可以的啊,你的现象说得不够详细啊.你现在的是限制死了的.说详细吧.空格就是" "嘛
#2
为什么一定要正则表达式匹配空格呢,有什么意义吗,直接写" ",或者"\u0020"不是很好吗
#3
\s
#4
\s 空白字符
#5
顶
#6
我写电话号码时碰到问题了
比如电话号码080-0736-13786238566,中间的连接符,上面要求包含空格,就是说写正则表达式匹配时,连接符即可以是-,也可以是空格,我就是直接“ ”这样匹配的,结果报错了,比如我写的正则是:
String phone = "^\\d{3}[ -]\\d{4}[ -]\\d{11}$";
你们去试,报错,没办法,发到网上找高手问问
比如电话号码080-0736-13786238566,中间的连接符,上面要求包含空格,就是说写正则表达式匹配时,连接符即可以是-,也可以是空格,我就是直接“ ”这样匹配的,结果报错了,比如我写的正则是:
String phone = "^\\d{3}[ -]\\d{4}[ -]\\d{11}$";
你们去试,报错,没办法,发到网上找高手问问
#7
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?");
}
}
}
#8
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]的形式
#9
\s
#10
String regex = "\\d+[\\s|-]+\\d+";
匹配空格或者-
匹配空格或者-
#11
非常谢谢,我会补分的,原来出在Scanner上
#12
楼上的万分感谢,是自己菜了,活该被老板骂,谢谢你,自己基础太差了
#13
其实每个人都有些东西不太了解,也或者是遇到了之前没遇到的事情,所以人不存在菜与不菜的事情。而且编程时靠积累来的。至于你的老板,如果真的如你说的用到“骂”这个词的话那也忒不会做人了。
#1
可以的啊,你的现象说得不够详细啊.你现在的是限制死了的.说详细吧.空格就是" "嘛
#2
为什么一定要正则表达式匹配空格呢,有什么意义吗,直接写" ",或者"\u0020"不是很好吗
#3
\s
#4
\s 空白字符
#5
顶
#6
我写电话号码时碰到问题了
比如电话号码080-0736-13786238566,中间的连接符,上面要求包含空格,就是说写正则表达式匹配时,连接符即可以是-,也可以是空格,我就是直接“ ”这样匹配的,结果报错了,比如我写的正则是:
String phone = "^\\d{3}[ -]\\d{4}[ -]\\d{11}$";
你们去试,报错,没办法,发到网上找高手问问
比如电话号码080-0736-13786238566,中间的连接符,上面要求包含空格,就是说写正则表达式匹配时,连接符即可以是-,也可以是空格,我就是直接“ ”这样匹配的,结果报错了,比如我写的正则是:
String phone = "^\\d{3}[ -]\\d{4}[ -]\\d{11}$";
你们去试,报错,没办法,发到网上找高手问问
#7
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?");
}
}
}
#8
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]的形式
#9
\s
#10
String regex = "\\d+[\\s|-]+\\d+";
匹配空格或者-
匹配空格或者-
#11
非常谢谢,我会补分的,原来出在Scanner上
#12
楼上的万分感谢,是自己菜了,活该被老板骂,谢谢你,自己基础太差了
#13
其实每个人都有些东西不太了解,也或者是遇到了之前没遇到的事情,所以人不存在菜与不菜的事情。而且编程时靠积累来的。至于你的老板,如果真的如你说的用到“骂”这个词的话那也忒不会做人了。