1. 匹配模式
所谓匹配模式,指的是正则中一些改变元字符匹配行为的方式,比如匹配时不区分英文字母大小写。常见的匹配模式有 4 种,分别是不区分大小写模式、点号通配模式、多行模式和注释模式。
1.1 不区分大小写模式
- 不区分大小写模式的指定方式,使用模式修饰符 (?i);
- 修饰符如果在括号内,作用范围是这个括号内的正则,而不是整个正则;
- 使用编程语言时可以使用预定义好的常量来指定匹配模式。
1.2 点号通配模式
- 使用模式修饰符 (?s);
- 一般情况下,**.**匹配除了换行以外的任意字符,启用点号通配模式即可使.真正匹配任意一个字符
- 注意:很多地方将点号通配模式成为单行匹配模式。
1.3 多行匹配模式
- 使用模式修饰符 (?m)
- 通常情况下,^匹配整个字符串的开头,$ 匹配整个字符串的结尾。多行匹配模式改变的就是 ^ 和 $ 的匹配行为,使 ^ 和 $ 能匹配上每行的开头或结尾。
1.4 注释模式
- 使用 (?#) 来表示,加入注释从而让正则更容易阅读和维护
例如:(\w+)(?#word) \1(?#word repeat again) - 很多编程语言中也提供了 x 模式来书写正则,也可以起到注释的作用,注意在 x 模式下,所有的换行和空格都会被忽略。
# python代码 import re regex = r'''(?mx) # 使用多行模式和x模式 ^ # 开头 (\d{4}) # 年 (\d{2}) # 月 $ # 结尾 ''' re.findall(regex, '202006\n202007') # 输出结果 [('2020', '06'), ('2020', '07')]
总结
- 不区分大小写模式,它可以让整个正则或正则中某一部分进行不区分大小写的匹配。
- 点号通配模式也叫单行匹配,改变的是点号的匹配行为,让其可以匹配任何字符,包括换行。
- 多行匹配说的是 ^ 和 $ 的匹配行为,让其可以匹配上每行的开头或结尾。
- 注释模式则可以在正则中添加注释,让正则变得更容易阅读和维护。