概念
正则表达式是一种用来匹配字符串的强有力的武器。设计思想使用一种描述性的语言来给字符串定义一个规则,凡是符合规则的字符串,就认为他“匹配”,否则就不匹配
分类
|字符集
\s | 匹配空白字符,包括空格、制表符、换页符 |
\S | 匹配非空白字符 |
\d | 匹配0-9的任意一个数字 |
\D | 匹配非数字字符 |
\w | 匹配任意一个字母或数字或下划线 |
\W | 匹配任意非单词字符 |
|定位符
^ | 匹配输入字符串的开始位置 |
$ | 匹配输入字符串的结束位置 |
\b | 匹配单词边界 |
\B | 匹配非单词边界 |
|修饰符
g | 全局匹配,找到所有满足匹配的子串 |
i | 忽略英文字母大小写 |
m | 多行匹配,把^和$变成行开头和行结尾 |
s | 使用单行模式 |
|量词
{n} | 表达式重复n次 |
{n,} | 表达式至少重复n次 |
{n,m} | 表达式至少重复n次,至多重复m次 |
* | 表达式不重复,或者重复任意次,相当于{1,} |
+ | 表达式至少重复1次,相当于{1,} |
? | 表达式重复0次或者1次,相当于{0,1} |
|量词(懒惰匹配)
*? | 表达式重复任意次,但尽可能少重复 |
+? | 表达式至少重复1次,但尽可能少重复 |
?? | 表达式重复0次或者1次,但尽可能少重复} |
{n,}? | 表达式至少重复n次,但尽可能少重复 |
{n,m}? | 表达式至少重复n次,至多重复m次,但尽可能少重复 |
|特殊字符
\n | 匹配换行符 |
\r | 匹配回车符 |
\t | 匹配水平制表符 |
\v | 匹配垂直制表符 |
\f | 匹配换页符 |
|分组与范围
. | 匹配除“\n”之外的任何单个字符 |
(xx) | 把“xx”当作一个整体 |
(abc xyz) | 匹配“abc”或“xyz” |
[abc] | 匹配 abc中任何一个字符 |
[^abc] | 匹配除了abc之外任何一个字符 |
[a-z] | 字符范围,匹配指定范围内的任意字符 |
[^a-z] | 负值字符范围,匹配任何不在指定范围内的任意字符 |
(?#comment) | 用于提供注释 |
|需转义字符
^ | [ |
{ | * |
\ | + |
< | > |
. | $ |
( | ) |