python(十三)正则表达式

来源:互联网 发布:编程教师培训 编辑:程序博客网 时间:2024/05/16 13:44
摘要 正则表达式作为字符串处理的强大工具,在各种编程语言中均占有重要地位,但是它实质上并没有想象的那么难,由于目前的正则表达式基本上都采用的是PCRE库,因此在PHP和Python中,正则表达式的写法都是一样的!

1,基本使用

Python中的 re 模块提供了对正则表达式的支持。如果你还对正则表达式的语法不熟悉的话请先去熟悉这一部分内容,这里不做过多解释。下面通过简单的案例来说明。

案例一:匹配座机号

通过上面这个简单的案例可以得出:

Python中正则表达式的模式串需要使用 "r" 前缀,类似于在Python中如果要使用 Unicode 编码的时候需要加上 "u" 前缀一样

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

由于当 match 匹配失败后会返回 None,因此,通常我们可以这样判断:

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

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

案例二:分组匹配

2,编译正则表达式

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

首先,编译正则表达式模式字符串,如果正则表达式模式字符串本身不合法,那么会报错。

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

因此,如果一个正则表达式可能会被使用多次,那么应该提前对它进行编译。

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

3,关于贪婪匹配的问题

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

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

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

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

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

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

网络编程开启!

0 0
原创粉丝点击