(一)正则表达式基础
1.重复匹配
* 匹配前面的模式零次或多次/匹配前面那个字符 0 或多次
+ 匹配前面的模式一次或多次/匹配前面那个字符 1 次以上
? 匹配前面的模式零次或一次/匹配前面那个字符 0 或一次
{M,N} 匹配前面那个字符至少 M,最多 N 次
{M,} 匹配前面那个字符至少 M 次,最多无限制
{,N} 匹配前面那个字符最多 N 次 (最少当然是 0 次)。注意,perl 正则不支持这种方式
{M} 匹配前面那个字符正好 M 次
2.字符类
[ ] 匹配括号内的任意一个字符。例如,[abc] 匹配字符 "a"、"b" 或 "c"。
[^ ] 匹配除了括号内的字符以外的任意一个字符。例如,[^abc] 匹配除了字符 "a"、"b" 或 "c" 以外的任意字符。
\d 任何一个数字字符;
\D 任何一个非数字字符
\w 任何一个字母数字或下划线,等于[a-zA-Z0-9_];
\W 相当于[^a-zA-Z0-9_]
\s 任何一个空白字符;
\S 任何一个非空白字符。
3.边界匹配
^ 匹配字符串的开头。
$ 匹配字符串的结尾。
\b 匹配单词边界。
\B 匹配非单词边界。
4.分组和捕获
( ) 用于分组和捕获子表达式。
(?: )用于分组但不捕获子表达式。
5.特殊字符
. 匹配任意单个字符,但不能匹配换行符 \n
\ 转义字符,用于匹配特殊字符本身。
| 用于指定多个模式的选择。
^$ 它表示匹配空行
.* 匹配任意长度的任意字符,但不能匹配换行符
(二).正则表达式标记
/pattern/flags
标记flags | 含义 | 描述 |
---|
i | ignore | - 不区分大小写 将匹配设置为不区分大小写,搜索时不区分大小写: A 和 a 没有区别。 |
g | global - | 全局匹配 查找所有的匹配项。 |
m | multi line | - 多行匹配 使边界字符 ^ 和 $ 匹配每一行的开头和结尾,记住是多行,而不是整个字符串的开头和结尾。 |
s | 特殊字符圆点 . 中包含换行符 \n | 默认情况下的圆点 . 是匹配除换行符 \n 之外的任何字符,加上 s 修饰符之后, . 中包含换行符 \n。 |