python正则表达式(一)

Python的正则表达式使用的是re模块,re模块是python 的内置模块,不需要额外下载。

一、re常量

re模块中定义了9个常量, 使用方法如下:

1、ASCII(简写为A)

用途:只匹配ASCII编码支持的字符, 这只对字符串匹配模式有效,对字节匹配模式无效

示例:

python正则表达式(一)_第1张图片

2、IGNORECASE(简写为I

用途:匹配时忽略大小写

示例:

python正则表达式(一)_第2张图片

3、LOCALE(简写为L

这个常量官方不推荐使用, 在此略过

4、UNICODE(简写为U)

用途:匹配unicode编码支持的字符, 由于python3默认是unicode编码,所有此常量在此略过

5、MULTILINE(简写为M)

用途:使得^和$字符可以匹配任意行的开始与结束

示例:

python正则表达式(一)_第3张图片

python正则表达式(一)_第4张图片

6、DOTALL(简写为S)

用途:使"."号匹配任何字符, 包括换行符

示例:

python正则表达式(一)_第5张图片

7、VERBOSE(简写为X)

用途:正则表达式可以换行书写,且可以加入注释

示例:此标志允许您通过允许您在视觉上分离模式的逻辑部分并添加注释来编写看起来更好且更具可读性的正则表达式。模式中的空格被忽略,除非在字符类中,或者前面有未转义的反斜杠,或者在 *? , (?: 或 (?P<...> 等标记内。当一行包含不在字符类中的 # 并且前面没有未转义的反斜杠时,从最左边的 # 到行尾的所有字符都将被忽略。

 python正则表达式(一)_第6张图片

8、TEMPLATE(简写为T)

用途:禁用回溯

示例:

python正则表达式(一)_第7张图片

 python正则表达式(一)_第8张图片

这个常量的作用比较难理解,结合上面的两个图来说明一下

图一是没有使用TEMPLATE的情况, 匹配步骤如下:

  • 匹配Ilikea
  • 贪婪匹配4个i
  • 匹配3个i,再往后匹配发现没有i了, 则向前回溯
  • 不那么贪婪了, 少匹配一个i及匹配3个i,匹配成功
  • 完成匹配

图二是使用TEMPLATE的情况, 禁用了回溯, 匹配步骤如下:

  • 匹配Ilikea
  • 贪婪匹配4个i
  • 匹配3个i,再往后匹配发现没有i了, 因为禁用了回溯,所以此时不能回溯,系统报错

9、DEBUG

用途:显示编译时的debug信息

示例:

python正则表达式(一)_第9张图片

PS:以上常量可以叠加使用, 叠加时请使用 | 符号  例如:re.I | re.A

你可能感兴趣的:(python,正则表达式)