元字符 | 描 述 |
---|---|
. | 句号匹配任意单个字符除了换行符 |
[] | 字符种类.匹配方括号内的任意字符 |
[^] | 否定的字符种类.匹配除了方括号里的任意字符 |
* | 匹配>=0个重复的在*号之前的字符 |
+ | 匹配>=1个重复的在+号之前的字符 |
? | 标记?之前的字符为可选 |
{n,m} | 匹配num个大括号之前的字符或字符集(n <= num <= m) |
(xyz) | 字符集,匹配与xyz完全相等的字符串 |
& | 与运算符.匹配符号前或后的字符 |
| | 或运算符.匹配符号前或后的字符 |
\ | 转义字符,用于匹配一些保留的字符 |
^ | 从开始行开始匹配 |
$ | 从末端开始匹配 |
点运算符 .
.
匹配任何单个字符,但不匹配换行符
字符集[ ]
字符集也叫做字符类。 方括号用来指定一个字符集。在方括号中使用连字符来指定字符集的范围。在方括号中的字符集不关心顺序。
否定字符集 ^
一般来说 ^ 表示一个字符串的开头,但它用在一个方括号内的开头的时候,它表示这个字符集是否定的。
*
号
*
号匹配,在*
之前的字符出现大于等于0次。
+
号
+
号匹配+
号之前的字符出现 >=1 次。
?
号
在正则表达式中元字符 ? 标记在符号前面的字符为可选,即出现 0 或 1 次。
{}
号
在正则表达式中 {}是一个量词,常用来限定一个或一组字符可以重复出现的次数。
(…)
特征标群
特征标群是一组写在 (…) 中的子模式。(…)中包含的内容将会被看成一个整体,和数学中小括号( )的作用相同。例如, 表达式 $(ab)*$ 匹配连续出现 0 或更多个 ab。如果没有使用 (…) ,那么表达式 $ab*$ 将匹配连续出现 0 或更多个 b 。再比如之前说的 {} 是用来表示前面一个字符出现指定次数。但如果在 {} 前加上特征标群 (…) 则表示整个标群内的字符重复 N 次。
锚点^号和$号
在正则表达式中,想要匹配指定开头或结尾的字符串就要使用到锚点。^ 指定开头,$ 指定结尾
简写 | 描述 |
---|---|
. | 除换行符外的所有字符 |
\w | 匹配所有字母数字,等同于[a-zA-Z0-9] |
\W | 匹配所有非字母数字,即符号,等同于:[^\w] |
\d | 匹配数字:[0-9] |
\D | 匹配非数字:[^\d] |
\s | 匹配所有空格字符,等同于:[\t\n\f\r\p{Z}] |
\S | 匹配所有非空格字符:[^\s] |
\f | 匹配一个换页符 |
\n | 匹配一个换行符 |
\r | 匹配一个回车符 |
\t | 匹配一个制表符 |
\v | 匹配一个垂直制表符 |
\p | 匹配CR/LF(等同于\r\n),用来匹配DOS行终止符 |
贪婪匹配与惰性匹配 (Greedy vs lazy matching)
正则表达式默认采用贪婪匹配模式,在该模式下意味着会匹配尽可能长的子串。我们可以使用 ? 将贪婪匹配模式转化为惰性匹配模式