或者,只匹配其中一个表达式,
A|B,如果 A 匹配了,则不再查找 B,反之亦然
12.(...)
匹配括号中的任意正则表达式
13.(?#...)
注释,忽略括号内的内容
14.(?=...)
表达式‘...’之前的字符串,
在字符串’ Pythonretest ’中 (?=test) 会匹配’ pythonre ’
15.(?!...)
后面不跟表达式'...'的字符串,
如果’ pythonre ’后面不是字符串’ test ’,那么 (?!test) 会匹配’ pythonre ’
16.(?<=...)
跟在表达式’…’后面的字符串符合括号之后的正则表达式
正则表达式’ (?<=abc)def ’会在’ abcdef ’中匹配’ def ’
17.(?<!...)
括号之后的正则表达式不跟在’…’的后面
2.如何使用正则表达正则表达式’ (?<=abc)def ’会在’ abcdef ’中匹配’ def 式
re模块提供了一个正则表达式引擎的接口,可以让你将REstring编译成对象并用它们来进行匹配
编译正则表达式:
import re
p = re.compile(规则)
例如:
>>> r1 = r"\d{3,4}-?\d{8}$"
>>> p_tel = re.compile(r1)
>>> p_tel
<_sre.SRE_Pattern object at 0x01BEFA30>
>>> p_tel.findall("056179882523")
['056179882523']
re.compile()也可接受可选的标志参数,常用来实现不同的特殊功能和语法变更。忽略大小写需要编译的时候加上re.I
>>> c_rel = re.compile(r"ahnu",re.I)
>>> c_rel.findall("Ahnu")
['Ahnu']
>>>
正则表达式执行匹配
match():决定RE是否在字符串刚开始的位置匹配
search():扫描字符串,找到这个RE匹配的位置
findall():找到RE匹配的所有子串,并将他们作为一个列表返回
finditer():找到RE匹配的所有子串,并将他们做为一个迭代器返回
如果没有匹配成功,match()和search()方法会返回一个None,如果成功的话,会返回一个matchobject对象
MatchObject实例方法:
group():返回被RE匹配的字符串
start():返回匹配开始的位置
end():返回匹配结束的位置
span():返回一个元组包含匹配(开始,结束)位置
实际程序中,最常见的方法是将MatchObject保存在一个变量里,然后检查它是否为None
p = re.compile(...)
m = p.match("string goes here")
if m :
print "Match found:",m.group()
else:
print"match not found"