正则表达式(Regular Expression)是一种文本模式,包括普通字符(如 a 到 z 之间的字母)和限定符(如 {} , + , ? 等)和特殊字符(称为"元字符")。
正则表达式使用单个字符串来描述、匹配符合某个句法规则的字符串。
许多程序设计语言都支持利用正则表达式进行字符串操作。
正则表达式以 ^ 代表开始,以 $ 代表结束。
限定符
| 限定符 | 描述 |
|---|---|
? | ? 前面的字符要出现0次或者1次。 |
* | * 前面的字符要出现0次或者多次。 |
+ | + 前面的字符要出现1次或者多次。 |
{} | {} 前面的字符要出现 {} 内数字的次数。 |
() | () 里面的多个字符要出现的次数。 |
(a|b) | 字符 a 或字符 b 。 |
[] | 字符必需为 [] 里面出现的字符。 |
[^ ] | 字符必需为 [] 里面出现之外的字符。 |
?
使用 used? 在 go to I use school with used useddd you and 中匹配 use 和 used 和 useddd 。
*
使用 cho*l 在 go to I use school chuul chl with used useddd you and 中匹配 school 和 chl ,不能匹配到 chuul 。
+
使用 cho+l 在 go to I use school chuul chl with used useddd you and 中匹配 school ,不能匹配到 chl 。
{}
使用 cho{2}l 在 go to I use school chuul chl with used useddd you and 中匹配 school ,表示 o 要出现2次。
使用 cho{2,8}l 在 go to I use school choooooool chuul chl with used useddd you and 中匹配 school ,表示 o 要出现2次以上8次以下(包含2次和8次)。
使用 cho{2,}l 在 go 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 | 垂直制表符 |
\p | CR/LF(等同于 \r\n ),用来匹配 DOS 行终止符 |
. | 代表任意单个字符,但不包含换行符 |
\ | 正则表达式的转义字符 |
^ | 匹配行首 |
$ | 匹配行尾 |
贪婪匹配转变为懒惰匹配
如果想要匹配 <a><span>click this to jump</span></a> 中的 <a></a> 和 <span></span> 标签,使用 <.+> 的意思为匹配标签内的任意字符,但是 > 也属于任意字符,所以会把整行字符都匹配到,此时需要在 + 后边加一个 ? 表示为 <.+?> ,即可将正则表达式默认的贪婪匹配转变为懒惰匹配。