正则表达式

简介

正则表达式(Regular Expression)是一种文本模式,包括普通字符(如字母、数字等)和特殊字符(称为"元字符",例如*.avi中的*)。

正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串,从而起到搜索、替换所需要的文本或文件名的功能。



以“\”开头的元字符

以下元字符不以“\”开头,要匹配其原义,去掉“\”即可。

空白字符

以下除了空格,均为元字符:

字符描述
\n换行符
\r回车符
\f换页符
\t水平制表符
\v垂直制表符
\d 和 \D

前者匹配一个数字字符。等价于:

[0-9]

后者与前者相反,匹配一个非数字字符。

\s 和 \S

前者匹配一个空白字符,等价于:

[ \f\n\r\t\v]

后者与前者相反,匹配一个非空白字符。

\w 和 \W

前者匹配一个字母、数字或下划线,等价于

[A-Za-z0-9_]

后者与前者相反。


不以“\”开头的元字符

以下元字符,要匹配其原义,需要使用“\”转义。

限定符

以下六种元字符可指定匹配字符的次数。

{n}

n为非负整数,表示匹配括号前一个字符n次,例如匹配字符a三次:

a{3}
{n,}

n为非负整数,表示匹配括号前一个字符至少n次。

{n,m}

表示匹配括号前一个字符n到m次。

*

匹配其前面的单个字符零次或多次,例如以下表达式可匹配“acd”、“abcd”、“abbcd”、“abbbbcd”等。

ab*cd
+

匹配其前面的单个字符一次或多次。以下表达式可匹配“abcd”、“abbcd”、“abbbbcd”等。

ab+cd
?

匹配其前面的单个字符零次或一次。以下表达式可匹配“acd”、“abcd”等。

ab?cd

定位符

^

该字符后面接字符串,表示匹配以该字符串开头的内容,例如:

^abc

则可以匹配到以“abc”开头的文本。

若在方括号中使用“^”,其含义为“取反”,即对于配所有该方括号中出现的内容均不匹配,例如,匹配除元音字母外的所有字符:

[^aeiou]
$

该字符前面接字符串,表示匹配以该字符串结尾的内容,例如,匹配所有以“abc”结尾的字符串:

abc$

该字符可与“^”连用,表示精确匹配,例如:

^123$

则只能匹配到内容为“123”的文本。

其他符号

[]

被方括号括住的内容为字符簇,用于匹配一个该方括号中出现的字符。例如,匹配所有元音字母:

[aeiou]

可使用“-”表示一个范围内的字符都进行匹配。例如,匹配一个数字:

[0-9]

注意顺序,0在前9在后,写反了就啥也匹配不到。

“-”不是元字符,除了在方括号中的这种特殊用法,“-”与其他普通字符使用方法一致。

.

匹配除换行符(\n及\r)之外的单个字符。相当于:

[^\n\r]
()

括号内的内容可作为子正则表达式,与其他正则表达式构成完整匹配规则。

|

表示选择,匹配“|”前面的字符串或后面的字符串,例如:

N|CBA

(N|C)BA

前者可匹配“N”和“CBA”,后者匹配“NBA”和“CBA”。



元字符运算优先级

元字符一般从左到右运算,优先级由高到底,如下表所示:

元字符描述
\转义符
[], ()中括号和小括号
*, +, ?, {n}, {n,}, {n,m}限定符
^, $, .等定位符和其他元字符
|选择符号



修饰符

修饰符并不是正则表达式的一部分,这些字符一般跟在正则表达式后面,以起到一些额外的作用:

修饰符部分以“/”作为开始,后面接修饰符:

修饰符功能
i不区分大小写
g全局匹配
m多行匹配
s令元字符“.”也能匹配到“\n”



参考资料

正则表达式 - 教程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值