加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式

发布时间:2020-12-13 22:09:44 所属栏目:百科 来源:网络整理
导读:正则表达式 特殊字符 ^ : 标定限定符开始的地方。 $ : 匹配输入字符串的结尾位置。 () : 标记一个子表达式的开始和结束位置。 * : 匹配前面的子表达式 零次 或 多次 。 + : 匹配前面的子表达式 一次 或 多次 。 . : 匹配换行符以外的任何字符 。 []:匹配一

正则表达式


特殊字符


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


限定符


{ : 标记限定符开始的地方
{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 : 任意空白字符 相当于[rnftv]
S : 任意非空白字符 相当于 [^rnftv]
[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

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

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


反向引用


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


高级分组 非捕捉组


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

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

AGE:

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

注释


表达式 含义
(?#comment) comment只代表注释,不代表任何含义。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读