正则表达式(regular Expression)
语法
- 普通字符:字母、数字、汉字、下划线、以及没有特殊定义的标点符号
- 转义字符
预定义字符
预定义字符 | 说明 |
---|---|
. | 可以匹配除"\n"的所有字符 |
\d | 匹配0~9的所有数字 |
\s | 匹配所有的空白字符,包括空格、制表符、回车符等 |
\w | 匹配所有的单词字符,包括0~9所有数字、26个英文字母和下划线 |
注意:d、s、w的大写形式恰好匹配与之相反的字符
方括号表达式
方括号表达式 | 说明 |
---|---|
表示枚举 | 例如[ab],表示a、b其中任意一个字符 |
表示范围:- | 例如[a-f],表示a~f范围内的任意字符 |
表示求否:^ | 例如[^ab],表示非a、b的任意字符 |
注意:
- 正则表达式的特殊符号被包含到中括号中,则失去特殊意义,除了^、-之外
- 标准字符集合,除小数点外,如果被包含于中括号,自定义字符集合将包含该集合,例[\d.\-+]将匹配数字、小数点、+、-
边界匹配符
匹配的不是字符而是位置,符合某种条件的位置,所以又叫“零宽”匹配
边界匹配符 | 说明 |
---|---|
^ | 行的开头 |
$ | 行的结尾 |
\b | 单词的边界(\b前面的字符和后面的字符不全为\w) |
\B | 非单词的边界 |
\A | 输入的开头 |
\Z | 输入的结尾,仅用于最后的结束符 |
两种匹配模式
- 贪婪模式:数量表示符默认采用贪婪模式,除非另有表达式。贪婪模式的表达式会一直匹配下去,直到无法匹配为止
- 勉强模式(最小匹配模式):用问号后缀(?)表示,只会匹配最少的字符
数量表示符
数量表示符 | 说明 |
---|---|
? | 表达式出现零次或一次 |
* | 表达式出现零次或多次 |
+ | 表达式出现一次或多次 |
{n} | 表达式出现n次 |
{n,} | 表达式最少出现n次 |
{n,m} | 表达式最少出现n次,最多出现m次 |
使用正则表达式
使用位于java.util.regex的Pattern类和Matcher类
Pattern对象是正则表达式编译后在内存中的表示形式,因此,正则表达式字符串必须先被编译为Pattern对象,然后再利用该Pattern对象创建对应的Matcher对象。执行匹配所涉及的状态保留在Matcher对象中,多个Matcher对象可以共享一个Pattern对象
//将一个字符串编译成Pattern对象
Pattern p=Pattern.compile("/*正则表达式*/")
//使用Pattern对象创建Matcher对象
Matcher m=p.matcher("/*需要匹配的字符串*/")