re模块也提供了顶级函数调用如match()、search()、sub()、subn()、split()、sindall()等
sub和subn是替换函数,
re.sub(pattern, repl, string[, count, flags])
在字符串 string 中找到匹配正则表达式 pattern 的所有子串,用另一个字符串 repl 进行替换。如果没有找到匹配 pattern 的串,则返回未被修改的 string。Repl 既可以是字符串也可以是一个函数。对于 RegexObject 有:
sub(repl, string[, count=0])
此语法的示例有:
>>> l = "ahnu ahnn ahun sshh ahhh"
>>> res = "ah.."
>>> re.sub(res,"Python",l)
'python python python sshh python'
>>> re.subn(res,"python",l)
('python python python sshh python', 4)
>>>
split()是分割函数
>>> res = r"[\+\-\*/]"
>>> l = "1+6-6*7/9"
>>> re.split(res,l)
['1', '6', '6', '7', '9']
>>>
编译标志:
DOTALL,S:使.匹配包括换行在内的所有字符
>>> r1 = r"csvt.net"
>>> re.findall(r1,"csvt.net")
['csvt.net']
>>> re.findall(r1,"csvtonet")
['csvtonet']
>>> re.findall(r1,"csvt\nnet")
[]
>>> re.findall(r1."csvt\tnet")
SyntaxError: invalid syntax
>>> re.findall(r1,"csvt\tnet",re.S)
['csvt\tnet']
>>>
IGNORECASE,I:使匹配对大小写不敏感
MULTLINE,M:多行匹配,影响^和$
>>> s = """
ahnu hello
hello ahnu
ahnu i love lyou
i love you ahnu
"""
>>> r = r"^ahnu"
>>> re.findall(r,s)
[]
>>> re.findall(r,s,re.M)
['ahnu', 'ahnu']
>>>
VERBOSE,X:能够使用REs的verbose状态,忽略空格和#后面的注释,使之被组织的更清晰易懂
>>> s = """
\d{3,4}
-?
\d{7}
"""
>>> re.findall(s,"05617988252")
[]
>>> re.findall(s,"05617988252",re.X)
['05617988252']
>>>
LOCALE,L:做本地化识别,匹配本地特殊语法