正则表达式
2018-10-25 本文已影响0人
jiamjg
为了实现复杂的模式匹配,模式串的构造应该遵循某种规则,这样的模式称为正则表达式。
正则表达式定义了字符串的模式。
正则表达式可以用来搜索、编辑或处理文本。
正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别。
正则表达式 | 说明 |
---|---|
[abc] | 匹配a,b,或c |
[^abc] | 匹配除a、b、c以外的字符 |
[a-zA-Z] | 匹配a到z或A到Z之间的字符 |
[a-d[m-p]] | a到d或m到p(并) |
[a-z&&[def]] | d,e,或f(交) |
[a-z&&[^bc]] | 除b,c以外a到z:[ad-z](差) |
[a-z&&[^m-p]] | a到z中除m到p以外的字符:[a-lq-z](差) |
在模式串中还可以使用一些预定义字符,称为元字符,如表所示。
元字符 | 说明 |
---|---|
. | 匹配任何单个字符 |
\d | 一位数字:[0-9] |
\D | 一位非数字:[^0-9] |
\s | 空格字符:[\t\n\x0B\f\r] |
\S | 非空格字符:[^\s] |
\w | 一个单词字符:[a-zA-Z_0-9] |
\W | 一个非单词字符:[^\w] |
量词用来指定模式在字符串中出现的次数。有3种类型的量词,贪婪量词、勉强量词和具有量词。
量词 | 模式X出现的次数 |
---|---|
X? | X出现0次或1次 |
X* | X出现0次或多次 |
X+ | X出现1次或多次 |
X{n} | X恰好出现n次 |
X{n,} | X至少出现n次 |
X{n,m} | X至少出现n次,但不超过m次 |
一般的量词是{n,m},n和m都是整数。X{n,m}在字符串中X至少重复n次,但不超过m次。例如,与X{3,5}匹配的字符串包括XXX、XXXX和XXXXX,但不包括X、XX和XXXXXX。
java中正则表达式常用的语法
字符的取值范围
1.[abc] : 表示可能是a,可能是b,也可能是c。
2.[^abc]: 表示不是a,b,c中的任意一个
3.[a-zA-Z]: 表示是英文字母
4.[0-9]:表示是数字
简洁的字符表示
.:匹配任意的字符
\d:表示数字
\D:表示非数字
\s:表示由空字符组成,[ \t\n\r\x\f]
\S:表示由非空字符组成,[^\s]
\w:表示字母、数字、下划线,[a-zA-Z0-9_]
\W:表示不是由字母、数字、下划线组成
数量表达式
1.?: 表示出现0次或1次
2.+: 表示出现1次或多次
3.*: 表示出现0次、1次或多次
4.{n}:表示出现n次
5.{n,m}:表示出现n~m次
6.{n,}:表示出现n次或n次以上
逻辑表达式
1.XY: 表示X后面跟着Y,这里X和Y分别是正则表达式的一部分
2.X|Y:表示X或Y,
3.(X):子表达式,将X看做是一个整体
在实际的开发中,是使用String类下的方法
验证: boolean matches(String regex)
拆分: String[] split(String regex)
替换: String replaceAll(String regex, String replacement)