java中正则表达式无法匹配空格

\s能否匹配三种空格

在众多正则表达式的教程中,对于\s的解释都是匹配空格。但在对于java中的多种空格,\s不能对他们全部进行匹配

  • 半角空格:“ ”.
    • Unicode编码为:\u0020
    • 可以通过正则表达式中的\s进行匹配
  • 全角空格:“ ”
    • Unicode编码为:\u3000
    • 不能通过正则表达式中的\s进行匹配
  • 不换行空格(连续空格)
    • Unicode编码为:\u00A0,主要用在office中。
    • 不能通过正则表达式中的\s进行匹配

文末附上测试所用代码。

匹配三种空格,我的简陋解决方案

\s匹配空格的位置,改用[\u3000|\u0020|\u00A0]。其中,[]:代表一个字符组 匹配包含括号内元素的字符

实验代码如下:

public static void testSpace(){
        String regexOriginal = "空格\\s+匹配";
        String regexUpdate = "空格[\\u0020|\\u3000|\\u00A0]+匹配";
        String str0020 = "空格\u0020匹配";
        String str3000 = "空格\u3000匹配";
        String str00A0 = "空格\u00A0匹配";

        Boolean b0020 = false;
        Boolean b3000 = false;
        Boolean b00A0 = false;


        Pattern pattern = Pattern.compile(regexOriginal);
        Matcher matcher0020 = pattern.matcher(str0020);
        Matcher matcher3000 = pattern.matcher(str3000);
        Matcher matcher00A0 = pattern.matcher(str00A0);

        b0020 = matcher0020.find();
        b3000 = matcher3000.find();
        b00A0 = matcher00A0.find();

        System.out.println("\\s可以匹配到\\u0020吗?(半角)" + b0020.toString());
        System.out.println("\\s可以匹配到\\u3000吗?(全角)" + b3000.toString());
        System.out.println("\\s可以匹配到\\u00A0吗?(连续空格)" + b00A0.toString());
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值