正则表达式的Java语言应用(不定期补充)

72 阅读2分钟

1、正则表达式的简介

正则表达式是用字符串描述的一个匹配规则,使用正则表达式可以快速的判定一个字符串是否符合规则。正则表达式本身与语言没有关系,它是一种规则但是正则表达式的实现就依赖于各种语言,而且并不是所有的规则都会被实现,遇到问题需要具体情况具体分析。

在工作中正则表达式经常被用在邮件格式验证、手机号验证、身份证号验证等等,当然实现这些功能不一定要靠正则(以下文中用正则代替正则表达式),但是通过正则我们可以很方便地完成这一系列功能,例如:我们来判断一个字符串是否都是数字(0-9):

如果不用正则,通过代码我们可以这样写

public boolean isNumber(String s){
    for(int i=0;i<s.length();i++){
        char c=s.charAt(i);
        if(c<'0'||>'9'){
            return false;
        }
    }
    return true;
}

用正则进行校验的话:

public boolean isNumber(String s){
    return s.matchers("^\\d+$");
}

看到这里我们发现用正则完成功能的话需要的代码行数很少,我们只需要写一个适合的正则就可以通过API完成校验功能了。 我们再来看另一个例子:将字符串中的空格替换为*_*

public static void main(String[]args){
    String s="hello world !";
    s=s.replaceAll("\\s","*_*");
    System.out.println(s);       
}

最终输出:

hello*_*world*_*!

通过以上两个例子我们简单认识了正则,下面我们开始正式学习。

2、简单匹配

正则遵守从左到右的匹配规则,例如正则"abc"就表示匹配字符串中的"abc"三个字符这是正则的精确匹配。当然精确匹配并不是我们想要的结果,我们期待能够准确的匹配正则这一表达式所代表的的一系列字符串的集合。这就是正则发挥本领的地方了。下面我们开始介绍一些常用的匹配规则

注:Java中"\"代表转义符是有特殊意义的并不是一个普通的字符串,但是在正则中"\"是比较常用的字符,在写成正则的时候需要用"\"进行转义例如:"\s"是一个正则,在Java中应该写成"\\s"。

2.1匹配数字

\d代表了匹配0-9中的任意一个数字

  • "2"可以匹配\d
  • "4"也以匹配\d
  • "a"就不能匹配\d了。

2.2匹配空格

\s匹配一个空格(也包括Tab符)

  • "a b",可以匹配

  • "ab"不能匹配