Dive in Python学习笔记七:正则表达式


 

在Python中,所有和正则表达式相关的功能都包含在re模块中。

search函数,有两个参数,一个是正则表达式,一个是字符串,函数试图匹配正则表达式。如果发现一个匹配,search 函数返回一个拥有多种方法可以描述这个匹配的对象,如果没有发现匹配,search 函数返回一个None,一个Python 空值(null value)。

>>> import re

>>> pattern = '^M?M?M?$'

>>> re.search(pattern, 'M')

<_sre sre_match="" object="" at="" 0x02340e90="">

>>> re.search(pattern, 'MMM')

<_sre sre_match="" object="" at="" 0x02340fa8="">

>>> re.search(pattern, 'MMMM')

>>>

说明:正则表达式的语法查看dir(re)

 

松散正则表达式

一个松散正则表达式和一个紧凑正则表达式主要区别表现在两个方面:

(1) 忽略空白符。空格符,制表符,回车符不匹配它们自身,它们根本不参与匹配。

(2) 忽略注释。

示例如下:

>>> pattern = """

^ # beginning of string

M{0,3} # thousands - 0 to 3 M's

(CM|CD|D?C{0,3}) # hundreds - 900 (CM), 400 (CD), 0-300 (0 to 3 C's),

# or 500-800 (D, followed by 0 to 3 C's)

(XC|XL|L?X{0,3}) # tens - 90 (XC), 40 (XL), 0-30 (0 to 3 X's),

# or 50-80 (L, followed by 0 to 3 X's)

(IX|IV|V?I{0,3}) # ones - 9 (IX), 4 (IV), 0-3 (0 to 3 I's),

# or 5-8 (V, followed by 0 to 3 I's)

$ # end of string

"""

>>> re.search(pattern, 'M', re.VERBOSE)

<_sre sre_match="" ob="" ject="" at="" 0x008eeb48="">

说明:当使用松散正则表达式时,最重要的一件事情就是:必须传递一个额外的参数re.VERBOSE,该参数是定义在re 模块中的一个常量,标志着待匹配的正则表达式是一个松散正则表达式。Python 默认每一个正则表达式都是紧凑类型的,除非你显式地标明一个正则表达式为松散类型。

 


摘自 蓝猫的专栏

相关内容

    暂无相关文章

评论关闭