正则表达式30分钟入门系列之3

2025-10-27 10:23:55

1、\s:这个关键字代表 任意的空白符

任意的哦,只要看不到的字符都是空白字符的

先来看看测试的脚手架代码:

Code:

package chapter4;

import java.util.Arrays;

import java.util.List;

import java.util.regex.Matcher;

import java.util.regex.Pattern;

/**

* Created by MyWorld on 2016/3/23.

*/

public class RegexStudyDemo {

   public static void main(String[] args) {

       String regexStr = "Hello\\s!";

       List<String> input = Arrays.asList("Hello !", "Hello !", "Hello\b!",                "Hello\t!", "Hello\r!", "Hello\f!", "Hello\n!");

       System.out.println(isMatch(input, regexStr));

   }

   private static boolean isMatch(List<String> inputs, String regexStr) {

       boolean result = true;

       for (String input : inputs) {

           Pattern pattern = Pattern.compile(regexStr);

           Matcher matcher = pattern.matcher(input);

           if (matcher.matches()) {

               continue;

           }

           System.out.println(input + "  is not match!");

           result = false;

       }

       return result;

   }

}

正则表达式30分钟入门系列之3

2、java代码就不再介绍了,前面已经解析过了

对什么时空白字符,各位tx的判断字符都不同,现在来解决下上面的字符的含义

"Hello !":中间是一个全角空格(是不是认为是两个空格了,不是啦)

"Hello !"   :中间是一个正常的空格,是半角了

"Hello\b!":中间的\b是java中预定义好的,表示认为是两个相邻田字格中间的分隔线吧

"Hello\t!":这个不用多说,制表符了,就是按键盘上的Tab键就是

"Hello\r!":\r是回车

"Hello\f!":\f是换页符

"Hello\n!":\n是换行符

执行下看看结果:

Output:

Hello !  is not match!

Hello!  is not match!

false

正则表达式30分钟入门系列之3

3、不少眼尖的tx已经发现了,上面的代码执行时,返回false

是因为

"Hello\\s!"”不能匹配"Hello !"(这个中文全角空格)

不能匹配"Hello\b!"(这个例子里,貌似"Hello\b!"和"Hello!"在输出结果上看不出来。说明举的例子,不是很恰当,下面的例子会澄清下)

即\s在java中不能匹配中文全角空格和英文空格

童话里都是骗人的,不是说好的,可以匹配空白字符的吗。。。

正则表达式30分钟入门系列之3

4、上次没通过的是"Hello\b!",还是"Hello !"(英文空格)

更改代码

Code:

List<String> input = Arrays.asList("Hello\b!", "Hello!");

正则表达式30分钟入门系列之3

5、执行下看看结果

给的两个都不匹配。

Output:

Hello!  is not match!(这个是"Hello\b!",因为list是有序的。\b粘贴过来,显示不出来了)

Hello!  is not match!

false

说明java的正则表达式中\s不能匹配  \b和中文全角空格

正则表达式30分钟入门系列之3

6、最后介绍一下正则表达式与关键字\s意义正好相反的关键字\S

\S:匹配任意不是空白符的字符

\s说了那么多,这个\S就不多说了,直接来代码

Code:

String regexStr = "Hello\\S!";

List<String> input = Arrays.asList("Hello\b!", "Hello !");

正则表达式30分钟入门系列之3

7、执行下看看结果

Output:

true

说明:

"Hello\\S!"可以匹配"Hello\b!"和"Hello !"(中文全角空格)

正则表达式30分钟入门系列之3

8、"Hello\\S!"是否匹配"Hello!"(o和!什么也没有)呢

更改代码:

List<String> input = Arrays.asList("Hello!","Hello汉!");

执行下看看结果

Output:

Hello!  is not match!

false

正则表达式30分钟入门系列之3

9、小结:

java的正则表达式

"Hello\\S!"可以匹配"Hello\b!"、"Hello汉!"和"Hello !"(中文全角空格)

"Hello\\S!"和"Hello\\s!"都不匹配"Hello!"(o和!什么也没有)

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢