python re模块
re模块主要用于查找、替换、分割
print(re.__doc__)
特殊字符(元字符):
"." 任意一个字符,除换行符(\n)
"^" 字符串开头
"$" 字符串结尾
"*" >=0个字符,贪婪匹配
"+" >=1个字符,贪婪匹配
"?" 0或1个字符,贪婪匹配
{m, n} 重复m至n次个字符,贪婪匹配
*?, +?, ??, {m, n}? 非贪婪,尽量少
[] 一个字符
"|" 或
() group使用,分割使用时,全部作为列表元素
(?P<name>) 字符匹配别名
特殊序列:
\A 字符串开始
\Z 字符串结尾
\b 开始或结尾位置的空字符串
\B 非\b
\d [0-9]
\D [^0-9]
\s 空白字符 [\t\n\r\f\v]
\S 非\s [^\s]
\w [a-zA-Z0-9_] 数字、字母
\W 非数字、字母
\\ \
可选函数参数:
re.I 忽略大小写
注:分割不忽略大小写
re.M 多行匹配
注:改变^$方式为:每行都判定
函数:
(1)查找(找到一个就完成)
match(patttern, string)
从字符串开始位置匹配,无返回None
search(pattern, string)
整个字符串范围内匹配,无返回None
(2)匹配条件
compile(pattern)
(3)分割
split(pattern, string)
匹配分割,返回列表
(4)全部查找
findall(pattern, string)
查找所有匹配子串,返回列表
finditer(pattern, string)
查找所有匹配子串,组成一个迭代器
(5)替换
sub(pattern, repl, string)
在字符串string中,查找匹配正则表达式pattern的所有子串,用另一个字符串repl进行替换
subn(pattern, repl, string)
同sub,返回二维元组
运用方式:
r1 = re.compile("[.*]") re.findall(r1, "abc")
r1 = re.compile(r"world")
if r1.match("helloworld"): print("Ok")
re.split("(\w+)", "192.168.1.1")