正则表达式——编译标志

re.S

.代表匹配任意单个字符,但是一般情况下\n \t字符却匹配不到。匹配时候加上re.S编译标志即可解决问题。

>>> import re
>>> r1 = r"qq.com" #这里的‘.‘不止是点,代表匹配任意单个字符
>>> re.findall(r1, "qq.com")
['qq.com']
>>> re.findall(r1, "qqxcom")
['qqxcom']
>>> re.findall(r1, "qqxcom", re.S)
['qqxcom']
>>> re.findall(r1, "qq\ncom") #但是在匹配\n \t等却不行,加上re.S编译标志即可
[]
>>> re.findall(r1, "qq\ncom", re.S)
['qq\ncom']
>>> re.findall(r1, "qq\ncom")
[]
>>> re.findall(r1, "qq\tcom", re.S)
['qq\tcom']

re.I

re.IGNORECASE的缩写,此编译标志代表,匹配时候忽视字母大小写

>>> import re
>>> r1 = r"top"
>>> re.findall(r1, "top Top TOP")
['top']
>>> re.findall(r1, "top Top TOP", re.I)
['top', 'Top', 'TOP']

re.M

re.MULTILINE的缩写:多行匹配,影响 ^ 和 $

#!/usr/bin/python
#coding:utf8

import re
r1 = r"^hello|good$"
s = """
hello world
hello python
very good
"""

#在一个字符串有多行的时候
print re.findall(r1, s) #不加re.M之匹配第一行
print "#"*20
print re.findall(r1, s, re.M) #加了之后,匹配所与的行

$ python e6.py 
['good'] 
####################
['hello', 'hello', 'good']

re.X

re.VERBOSE的简写,能够使用REs的verbose状态,使之正则表达式更加清晰。

#!/usr/bin/python
#coding:utf8
import re

#匹配一个电话号码:0570-1234567
res = r"""
\d{3,4}
-?
\d{6,7} 
"""
#res = r"\d{3,4}-?{6,7}" 如果这样的话,匹配不需要加re.X
print re.findall(res, "0570-1234567")
print "#"*20
print re.findall(res, "0570-1234567", re.X)

$ python e7.py 
[] 
####################
['0570-1234567']
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值