Python正则表达式介绍及使用方法(2)

或者,只匹配其中一个表达式,

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"

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/823124bdd63622fc2508103ac1d9b3bf.html