第15章 正则表达式(2)

15.3 正则表达式和Python语言

15.3.1 re模块:核心函数和方法

在模式匹配之前,正则表达式必须先被编译成regex对象。由于正则表达式在执行过程中被多次用于比较,所以强烈建议对它做预编译,而且,既然正则表达式的编译是必须的,那使用预编译来提升执行性能无疑是明智之举。re.compile()就是用来提供此功能的。

15.3.2 使用compile()编译正则表达式

大多数re模块函数都可以作为regex对象的方法。尽管我们建议预编译,但它并不是必需的。

15.3.3 匹配对象和group()、groups()方法

在处理正则表达式时,除regex对象外,还有另一种对象类型-匹配对象。这些对象是在match()或search()被成功调用之后所返回的结果。匹配对象有两个主要方法:group()和groups()。

group()方法或者返回所有匹配对象或是根据要求返回某个特定子组。groups()则很简单,它返回一个包含唯一或所有子组的元组。如果正则表达式中没有子组的话,groups()将返回一个空元组,而group()仍会返回所有匹配对象。

15.3.4 用match()匹配字符串

match()函数尝试从字符串的开头开始对模式进行匹配。如果匹配成功,就返回一个匹配对象,而如果匹配失败了,就返回None。匹配对象的group()方法可以用来显示那个成功的匹配。

>>> import re
>>> name = re.match("Fan", "Fan")
>>> if name is not None:
... 	print name.group()
... 	
Fan
>>> 

15.3.5 search()在一个字符串中查找一个模式(搜索与匹配的比较)

search会检查参数字符串任意位置的地方给定正则表达式模式的匹配情况。如果搜索到成功的匹配,会返回一个匹配对象,否则返回None。

>>> import re
>>> name = re.search("Fan", "Anders Fan")
>>> if name is not None:
... 	print name.group()
... 	
Fan
>>> 
15.3.6 匹配多个字符串(|)

>>> import re
>>> name = re.search("Xuyang|Xufei|Bingfeng", "Bingfeng Fan")
>>> if name is not None:
... 	print name.group()
... 	
Bingfeng
>>> 
15.3.7 匹配任意单个字符(.)

>>> name = re.search(".soft", "Beyondsoft")
>>> if name is not None:
... 	print name.group()
... 	
dsoft
>>> 
>>> name = re.search("3\.14", "3.1415926")
>>> if name is not None:
... 	print name.group()
... 	
3.14
>>> 
15.3.8 创建字符集合([])

>>> name = re.search("[th]soft", "shsoft")
>>> if name is not None:
... 	print name.group()
... 	
hsoft
>>> 
15.3.9 重复、特殊字符和子组

>>> patt = '\w+@(\w+\.)?\w+\.com'
>>> mail = re.match(patt, 'xufei96@hotmail.com')
>>> if mail is not None:
... 	print mail.group()
... 	
xufei96@hotmail.com
>>> 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值