正则表达式——编译标志

来源:互联网 发布:网站搜索引擎优化案例 编辑:程序博客网 时间:2024/05/18 06:08

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:utf8import rer1 = r"^hello|good$"s = """hello worldhello pythonvery good"""#在一个字符串有多行的时候print re.findall(r1, s) #不加re.M之匹配第一行print "#"*20print re.findall(r1, s, re.M) #加了之后,匹配所与的行$ python e6.py ['good'] ####################['hello', 'hello', 'good']

re.X

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

#!/usr/bin/python#coding:utf8import re#匹配一个电话号码:0570-1234567res = r"""\d{3,4}-?\d{6,7} """#res = r"\d{3,4}-?{6,7}" 如果这样的话,匹配不需要加re.Xprint re.findall(res, "0570-1234567")print "#"*20print re.findall(res, "0570-1234567", re.X)$ python e7.py [] ####################['0570-1234567']
0 0