正则表达式

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)

上一篇 下一篇

猜你喜欢

热点阅读