Java正则表达式学习总结

正则表达式(regular expressions)是一种描述字符串集的方法,它是以字符串集中各字符串的共有特征为依据的。正则表达式可以用于搜索、编辑或者是操作文本和数据。它超出了 Java 程序设计语言的标准语法,因此有必要去学习特定的语法来构建正则表达式。正则表达式的变化是复杂的,一旦理解了它们是如何被构造的话,就能解析或者构建任意的正则表达式了。

一、java.util.regex API 支持的正则表达式语法

java.util.regex 包主要由三个类所组成:Pattern、MatcherPatternSyntaxException

Pattern 对象表示一个已编译的正则表达式,Pattern 类没有提供公共的构造方法,要构建一个模式,首先必须调用公共的静态 compile 方法,它将返回一个 Pattern 对象。这个方法接受正则表达式作为第一个参数。

Matcher 是一个靠着输入的字符串来解析这个模式和完成匹配操作的对象。与 Pattern 相似,Matcher 也没有定义公共的构造方法,需要通过调用 Pattern 对象的 matcher 方法来获得一个 Matcher 对象。

PatternSyntaxException 对象是一个未检查异常,指示了正则表达式中的一个语法错误。

二、 使用方法

1.支持的基本通配符

. -可以匹配任意字符

\s -代表一个任意空白(空格、Tab)

\S -代表一个任意的非空白

\d -代表一个任意的数字(digital)

\D -代表一个任意的非数字

\w -代表一个单词字符

-W -代表一个任意的非单词字符

2.取值范围

? –代表它前面的东西可以出现0~1次(有或无)

* –代表它前面的东西可以出现0~N次

+ –代表它前面的东西可以出现1~N次

{n,m} –代表它前面的东西可以出现n~m次

{n,} –代表它前面的东西至少出现n次

{,m} –代表它前面的东西最多出现m次

{n} –代表它前面的东西必须出现n次

3.方括号表达式

枚举:[ab1] –代表a或b或者1

范围:[a-c] –代表a,b,c中的任意一个字符

枚举与范围:[a-c1-3]–代表a,b,c,1,2,3中的任意一个字符

表示求否:[^a-c] –代表不含a,b,c其中任意一个字符

表示求交:[a-g&&[^b-d]]:–代表a,e,f,g中的任意一个字符

表示必须含有其中之一:(com|org|cn)

实例1:验证邮箱地址是否规范

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegexDemo {

    public static void main(String args[]){
        //要验证的邮箱
        String email="Todzhu@126.com";
        //邮箱验证规则(正则表达式)
        String regex="[\\w+\\d?[.-]]+@[\\w\\d]+\\.(com|org|cn|net)";
        //编译正则表达式
        Pattern pattern=Pattern.compile(regex);
        //构建匹配
        Matcher matcher=pattern.matcher(email);
        //判断是否正则匹配
        boolean regexmatch=matcher.matches();
        if(regexmatch){
        System.out.println("邮箱符合验证规则!");
        System.out.println("======"+matcher.group()+"======");
        }else{
        System.out.println("邮箱验证失败!");
        }
    }
}

运行结果:

邮箱符合验证规则!
======Todzhu@126.com======

这些只是正则表达强大功能的很少一部分,至于更深层次的正则表达用法,等用到的时候再继续更新!