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

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:做本地化识别,匹配本地特殊语法

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

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