正则表达式

282 阅读1分钟

正则表达式(Regular Expression)是一种文本模式,包括普通字符(如 a 到 z 之间的字母)和限定符(如 {} , + , ? 等)和特殊字符(称为"元字符")。

正则表达式使用单个字符串来描述、匹配符合某个句法规则的字符串。

许多程序设计语言都支持利用正则表达式进行字符串操作。

正则表达式以 ^ 代表开始,以 $ 代表结束。

限定符

限定符描述
?? 前面的字符要出现0次或者1次。
** 前面的字符要出现0次或者多次。
++ 前面的字符要出现1次或者多次。
{}{} 前面的字符要出现 {} 内数字的次数。
()() 里面的多个字符要出现的次数。
(a|b)字符 a 或字符 b
[]字符必需为 [] 里面出现的字符。
[^ ]字符必需为 [] 里面出现之外的字符。

?

使用 used?go to I use school with used useddd you and 中匹配 useuseduseddd

*

使用 cho*lgo to I use school chuul chl with used useddd you and 中匹配 schoolchl ,不能匹配到 chuul

+

使用 cho+lgo to I use school chuul chl with used useddd you and 中匹配 school ,不能匹配到 chl

{}

使用 cho{2}lgo to I use school chuul chl with used useddd you and 中匹配 school ,表示 o 要出现2次。

使用 cho{2,8}lgo to I use school choooooool chuul chl with used useddd you and 中匹配 school ,表示 o 要出现2次以上8次以下(包含2次和8次)。

使用 cho{2,}lgo to I use school choooooool chuul chl with used useddd you and 中匹配 school ,表示 o 要出现两次以上(包含2次)。

()

使用 (bc)+bcbcbce bcbcpp bcd go to I use school chuul chl with used useddd you and 中匹配 bcbcbce bcbcpp bcd ,表示 bc 要出现1次或者多次。

[]

使用 [a-z]+bcbcbce bcbcpp bcd go to I use school chuul chl with used useddd you and 中匹配所有小写英文字符 ,表示出现的字符必须在 a-z 中间。

使用 [^a-z]+bcbcbce bcbcpp bcd go to I use school chuul chl with used useddd you and 中匹配到所有的空格字符,表示出现的字符必须在 a-z 之外。

元字符

正则表达式主要依赖于元字符。 元字符不代表他们本身的字面意思,他们都有特殊的含义。

元字符描述
\d数字字符,等同于 [0-9]
\D数字字符,等同于 [^0-9]
\w单词字符,包括英文、数字、下划线,等同于 [a-zA-Z0-9_]
\W非单词字符,等同于 [^a-zA-Z0-9_]
\s空白符,包括制表符、换行符
\S非空白符
\f换页符
\n换行符
\r回车符
\t制表符
\c垂直制表符
\pCR/LF(等同于 \r\n ),用来匹配 DOS 行终止符
.代表任意单个字符,但不包含换行符
\正则表达式的转义字符
^匹配行首
$匹配行尾

贪婪匹配转变为懒惰匹配

如果想要匹配 <a><span>click this to jump</span></a> 中的 <a></a><span></span> 标签,使用 <.+> 的意思为匹配标签内的任意字符,但是 > 也属于任意字符,所以会把整行字符都匹配到,此时需要在 + 后边加一个 ? 表示为 <.+?> ,即可将正则表达式默认的贪婪匹配转变为懒惰匹配。