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

正则表达式基础

发布时间:2020-12-13 23:05:18 所属栏目:百科 来源:网络整理
导读:1.概述 正则表达式 ,又称 正规表示法 、 常规表示法 ( 英语 :Regular Expression,在代码中常简写为regex、regexp或RE) 。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的 字符串 。在很多 文本编辑器 里,正则表达式通常被用来检索、替


1.概述

正则表达式,又称正规表示法常规表示法英语:Regular Expression,在代码中常简写为regex、regexp或RE)。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。


2.正则表达式基础

正则表达式 由一些普通字符和一些元字符(metacharacters)组成。普通字符包括大小写的字母和数字,而元字符则具有特殊的含义,我们下面会给予解释。

1.[...]字符组

字符组可以匹配[ ]中包含的任意一个字符。虽然可以是任意一个,但只能是一个。

字符组支持由连字符“-”来表示一个范围。当“-”前后构成范围时,要求前面字符的码位小于后面字符的码位。

[^…]排除型字符组。排除型字符组表示任意一个未列出的字符,同样只能是一个。排除型字符组同样支持由连字符“-”来表示一个范围。


表达式

说明

[abc]

表示a”b”c”

[^abc]

表示除了“a”b”c”外任意字符

[0-9]

表示0~9中任意一个数字,等价于[0123456789]

[u4e00-u9fa5]

表示任意一个汉字

[^a1<]

表示除a”1”<”外的其它任意一个字符

[^a-z]

表示除小写字母外的任意一个字符

[a-zA-Z]

表示从az或从AZ的字符

[a-z&&[hij]]

表示h,ij(交)


实例:

[0-9]”在匹配“Windows 7”时,匹配成功,匹配的结果为“7”。

[^inW]”在匹配“Windows 7”时,匹配成功,匹配的结果为“d”。

[a-z]”在匹配“123az”时,匹配成功,匹配的结果为“a”。


2.常见字符范围缩写


表达式

说明

d

任意一个数字,相当于[0-9],即0~9中的任意一个

w

任意一个字母或数字或下划线,相当于[a-zA-Z0-9_]

s

任意空白字符,相当于[回车r换行n换页fTabt]

D

任意一个非数字字符,d取反,相当于[^0-9]

W

w取反,相当于[^a-zA-Z0-9_]

S

任意非空白字符,s取反,相当于[^rnftv]


实例:
wsd”在匹配“Windows 7”时,匹配成功,匹配的结果为“s 7”。



3.小数点

表达式

说明

.

匹配除了换行符n以外的任意一个字符



4.其它元字符

说明

^

匹配字符串开始的位置(包括nr后的位置),不匹配任何字符

$

匹配字符串结束的位置(包括nr前的位置),不匹配任何字符

b

匹配单词边界,不匹配任何字符

B

匹配非单词的边界

G

前一个匹配的结束


实例:

^a”在匹配“cba”时,匹配失败,因为表达式要求开始位置后面是字符“a”,而“cba”显然是不满足的。

d$”在匹配“123”时,匹配成功,匹配结果为“3”,这个表达式要求匹配结尾处的数字,如果结尾处不是数字,如“123abc”,则是匹配失败的。

erb”在匹配“never”,匹配成功,匹配结果为“er”。匹配“verb”匹配失败,er后不是词的边界。


5.转义字符


说明

r,n

回车和换行

匹配“”本身

^,$,.

分别匹配“^”、“$”和“.”




6.量词

说明

举例

{m}

表达式匹配m次

“d{3}”相当于“ddd”

“(abc){2}”相当于“abcabc”

{m,n}

表达式匹配最少m次,最多n次

“d{2,3}”可以匹配“12”或“321”等2到3位的数字

{m,}

表达式至少匹配m次

“[a-z]{8,}”表示至少8位以上的字母

?

表达式匹配0次或1次,相当于{0,1}

“ab?”可以匹配“a”或“ab”

*

表达式匹配0次或任意多次,相当于{0,}

“<[^>]*>”中“[^>]*”表示0个或任意多个不是“>”的字符

+

表达式匹配1次或意多次,至少1次,相当于{1,}

“ds+d”表示两个数字中间,至少有一个以上的空白字符


7.逻辑操作符

说明

|

多个子表达式之间取的关系

XY

Y跟在X后面

X

捕获组


实例:

^aa|b$”在匹配“cccb”时,是可以匹配成功的,匹配的结果是“b”,因为这个表达式表示匹配“^aa”或“b$”,而“b$”在匹配“cccb”时是可以匹配成功的。

^(aa|b)$”在区配“cccb”时,是匹配失败的,因为这个表达式表示在“开始”和“结束”位置之间只能是“aa”或“b”,而“cccb”显然是不满足的。

(编辑:李大同)

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

    推荐文章
      热点阅读