正则表达式是一种最早起源于Perl语言的特殊字符串技术,可以通过一些固定的模式编写一些特殊的字符串,通过对这些特殊字符串使用,可以有效的进行表单验证(手机,邮箱,网址等输入格式的检查),以及一些数据的爬取,包括字符替换等功能;因此,正则表达式是一项非常强大的表达式语言。
相关类
java基础架包中java.util.regex提供正则表达式相关的类:
- Pattern 表示正则表达式编译器对象。Pattern 类没有提供公共的构造方法。 必须调用公共的静态 compile 方法,它将返回一个 Pattern 对象。
- Matcher 正则表达式的匹配器。 Matcher 没有定义公共的构造方法,需要通过调用 Pattern 对象的 matcher 方法来获得一个 Matcher 对象。
简单的正则表达式例子:
手机号: ^1[3456789]\\d{9}$
解析:
观察以上表达式,被匹配的字符串,必须以数字1开后,后面第二数只能为3,4,5,6,7,8,9中的其中一个,从第三位开始后面一共包含9位数字,并且以数字结尾。
基本规则
正则表达式组成规范
“.” :
用于匹配一个任意的字符
“[]”
为了解决句点符号匹配范围过于广泛这一问题,你可以在方括号(“[]”)里面指定看来有意义的字符。此时,只有方括号里面指定的字符才参与匹配。也就是说,正则表达式“t[aeio]n”只匹配“tan”、“Ten”、“tin”和“ton”。但“Toon”不匹配。
“|”
如果除了上面匹配的所有单词之外,你还想要匹配“toon”,那么,你可以使用“|”操作符。“|”操作符的基本意义就是“或”运算。要匹配“toon”,使用“t(a|e|i|o|oo)n”正则表达式。这里不能使用方扩号,因为方括号只允许匹配单个字符;这里必须使用圆括号“()”, 它表示一个整体。
“-”
与表示数字或字母的范围
如: [0-9]表示0到9中的其中一个字符,[3-8]表示3到8中的一个字符
[b-d3-8]表示b到z或3到8中其中一个字符 [a-z]表示a到z中的其中一个字符[a-c][0-9]{3}
可以匹配a234,b112,c223等。这里的大括号“{}”表示能匹配的字符数量“^”
- 直接使用表示以什么开头,”^1asd”,表示以“1”开头
-在[]中使用 即非,用来确定紧靠该符号右边的符号不能出现,
如:
[^0-9]
表示不可以为0到9
示例[^A]
表示不可以为A的字符$
匹配次数的通配符
这些符号用来确定紧靠该符号左边的符号出现的次数
示例
1 | 示例1:a*Hello可以匹配以Hello结尾,以0到多个a开头的字符串,如Hello,aHello,aaHello,aaaHello |
快捷符号
1 | \d表示 [0-9] |