正则表达式

正则表达式


特殊字符


^ : 标定限定符开始的地方。
$ : 匹配输入字符串的结尾位置。
() : 标记一个子表达式的开始和结束位置。
* : 匹配前面的子表达式零次多次
+ : 匹配前面的子表达式一次多次
. : 匹配换行符以外的任何字符 。
[]:匹配一个中括号开始和结束的地方。
\ : 限定表达式。


限定符


{ : 标记限定符开始的地方
{n} : n为非负整数,至少匹配n次。
{n,m}: 最少匹配n次,最多匹配m次。


\w : 包括下划线之外的任何单词字符。类似于[A-Za-z0-9_]
\W : 匹配任何非单词字符 相当于[^A-Za-z0-9_]
\d : 匹配一个数字 [0-9]
\D : 匹配一个非数字[^0-9]
[^xyz] 匹配非包含的任意一个字符。
\B :匹配非边界字符
\b:匹配边界字符 指定字符两侧不能同时为字母数字下划线
\s : 任意空白字符 相当于[\r\n\f\t\v]
\S : 任意非空白字符 相当于 [^\r\n\f\t\v]
[a-d[m-p]] : a到d,或者m到p [a-dm-p] 并集
[a-z&&[def]] : def a-z与def的交集
[a-z&&[^bc]] : 除bc外,a到z的集合。

量词返回目录


贪婪量词(greedy)勉强量词(relunctant)侵占量词(possessive)意义
X?X??X?+匹配X零次或一次
X*X*?X*+匹配X零次或多次
X+X+?X++匹配X一次或多次
X{n}X{n}?X{n}+匹配X n次
X{n,}X{n,}?X{n,}+匹配X至少几次
X{n,m}X{n,m}?X{n,m}+匹配X至少n次,但不多于m次

贪婪:强迫匹配器读入整个输入的字符串
勉强:从输入字符串的开始处开始,每次勉强的吞噬掉一个字符串来寻求匹配,最后才会尝试整个输入的字符串。
侵占:吞掉整个输入的字符串,尝试着一次匹配。


捕捉组


捕捉组,简而言之为我们能从指定字符串中捕捉到我们所要的子串,然后分组,根据组号能取出我们所要的数据。

AGE:

组号为括号的顺序
A(b(c)de(fg))hi(jk)lmn

组号内容解释
组0A(b(c)de(fg))hi组0为默认的
组1b(c)de(fg)组1为从左到右第一个括号括起来的内容
组2c组2为第二个括号括起来的内容
组3fg组3位从左到右括号括起来的内容
组4jk组4为从左到右第四个括号括起来的内容

java JDK中groupCount统计Group数不会将group0统计在内。


反向引用


匹配字符串的捕获部分存放在内存中,通过反向引用稍后会继续调用。
age: 134(\d\d)\1
匹配以134开头的后面两个数字重复两次的串。
\1代表重复组1括号内的的数据。
反向引用反斜线+组号


高级分组 非捕捉组


以(?)开头的组是非捕捉组,不捕捉文本,也不针对组合计数,如果小括号以?开头,那么这个分组就不会捕捉分组。

表达式解释
(?=X)零宽度先行断言,仅当表达式在此位置的右侧才能继续匹配。
(?!X)零宽度负先行断言,仅当子表达式X不在此位置。
(?<=X)零宽度正后发断言,仅当子表达式X不在此位置的右侧匹配才能继续匹配。
(?<!X)零宽度负后发断言,仅表达式X不在此位置左侧才能继续匹配。
AGE:

(?<!4)56(?=9) 56前面不能为4,后面必须匹配9。

注释


表达式含义
(?#comment)comment只代表注释,不代表任何含义。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值