正则表达式怎么匹配空格

时间:2022-09-06 05:38:20
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}$";
你们去试,报错,没办法,发到网上找高手问问

#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


引用 6 楼 bocai17 的回复:
我写电话号码时碰到问题了 
比如电话号码080-0736-13786238566,中间的连接符,上面要求包含空格,就是说写正则表达式匹配时,连接符即可以是-,也可以是空格,我就是直接“ ”这样匹配的,结果报错了,比如我写的正则是: 
String phone = "^\\d{3}[ -]\\d{4}[ -]\\d{11}$"; 
你们去试,报错,没办法,发到网上找高手问问


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


引用 12 楼 bocai17 的回复:
楼上的万分感谢,是自己菜了,活该被老板骂,谢谢你,自己基础太差了

其实每个人都有些东西不太了解,也或者是遇到了之前没遇到的事情,所以人不存在菜与不菜的事情。而且编程时靠积累来的。至于你的老板,如果真的如你说的用到“骂”这个词的话那也忒不会做人了。

#1


可以的啊,你的现象说得不够详细啊.你现在的是限制死了的.说详细吧.空格就是" "嘛

#2


为什么一定要正则表达式匹配空格呢,有什么意义吗,直接写" ",或者"\u0020"不是很好吗

#3


\s

#4


\s 空白字符

#5


#6


我写电话号码时碰到问题了
比如电话号码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


引用 6 楼 bocai17 的回复:
我写电话号码时碰到问题了 
比如电话号码080-0736-13786238566,中间的连接符,上面要求包含空格,就是说写正则表达式匹配时,连接符即可以是-,也可以是空格,我就是直接“ ”这样匹配的,结果报错了,比如我写的正则是: 
String phone = "^\\d{3}[ -]\\d{4}[ -]\\d{11}$"; 
你们去试,报错,没办法,发到网上找高手问问


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


引用 12 楼 bocai17 的回复:
楼上的万分感谢,是自己菜了,活该被老板骂,谢谢你,自己基础太差了

其实每个人都有些东西不太了解,也或者是遇到了之前没遇到的事情,所以人不存在菜与不菜的事情。而且编程时靠积累来的。至于你的老板,如果真的如你说的用到“骂”这个词的话那也忒不会做人了。