python(十三)正则表达式

1,基本使用正则表达式

Python中的 re 模块提供了对正则表达式的支持。若是你还对正则表达式的语法不熟悉的话请先去熟悉这一部份内容,这里不作过多解释。下面经过简单的案例来讲明。编程

案例一:匹配座机号网络

经过上面这个简单的案例能够得出:函数

Python中正则表达式的模式串须要使用 "r" 前缀,相似于在Python中若是要使用 Unicode 编码的时候须要加上 "u" 前缀同样编码

re 模块的 match 方法能够用来执行一个正则匹配,当匹配成功的时候返回一个 Match 对象,当失败的时候返回 Nonespa

因为当 match 匹配失败后会返回 None,所以,一般咱们能够这样判断:
code

那这里只是使用一个简单的案例来讲明正则表达式在Python中的使用方式。使用方法很简单,难的是怎么编写出复杂并且功能强大的正则表达式模式串,所以,若是你对正则的语法属性,那么就能够借助 re 模块中的 match 或者其它方法来实现一些更加复杂的字符串操做功能!对象

固然了,对于 match 匹配成功返回的 Match 对象,该对象还提供一些其它的方法能够用来获取匹配到的字符串的信息,下面以一个简单的分组说明一下。字符串

案例二:分组匹配网络编程

2,编译正则表达式

当咱们使用Python中的正则表达式的时候,re 模块内部会作两件事情:

首先,编译正则表达式模式字符串,若是正则表达式模式字符串自己不合法,那么会报错。

而后,使用编译后的正则表达式去执行匹配。

所以,若是一个正则表达式可能会被使用屡次,那么应该提早对它进行编译。

编译正则表达式模式字符串可使用 re 模块中的 compile 函数,以下:

3,关于贪婪匹配的问题

正则表达式的匹配模式有贪婪模式和非贪婪模式。默认状况下,正则表达式是处于贪婪模式的!

在贪婪模式下,正则表达式会尽量多的去匹配给定字符串中的内容,而在非贪婪模式下则相反。

以下举例,在贪婪模式下执行的匹配不符合预期:

因为前面的模式 “\d+”处于贪婪模式下,所以会尽量多的去执行匹配,那么后面的“0”就不可以被第二个分组捕捉到,所以,在这种状况下须要消除贪婪模式。

消除贪婪模式的方法就是在不但愿执行贪婪匹配的模式串后面增长一个“?”来执行最小匹配,以下:

-------------------------------------------------这是一条分割线--------------------------------------------

网络编程开启!