首先需要导入re模块import re
re库中常用方法
re.search(pattern, string, flags=0)
遍历整个字符串并返回第一个成功的匹配。re.match(pattern, string, flags=0)
尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。pattern
:匹配的正则表达式string
:要匹配的字符串。flags
:标志位,用于控制正则表达式的匹配方式re.sub(pattern, repl, string, count=0)
用于替换字符串中的匹配项,repl : 替换的字符串,也可为一个函数。pattern
: 正则中的模式字符串。repl
: 替换的字符串,也可为一个函数。string
: 要被查找替换的原始字符串。count
: 模式匹配后替换的最大次数,默认 0 表示替换所有的匹配。re.compile(pattern[, flags])
用于编译正则表达式,生成一个正则表达式( Pattern )对象,供 match() 和 search() 这两个函数使用。pattern
: 一个字符串形式的正则表达式flags
: 标志位,用于控制正则表达式的匹配方式findall(string[, pos[, endpos]])
在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表。string
: 待匹配的字符串。pos
: 可选参数,指定字符串的起始位置,默认为 0。endpos
: 可选参数,指定字符串的结束位置,默认为字符串的长度。re.split(pattern, string[, maxsplit=0, flags=0])
能够匹配的子串将字符串分割后返回列表。pattern
: 匹配的正则表达式string
: 要匹配的字符串。maxsplit
: 分隔次数,maxsplit=1 分隔一次,默认为 0,不限制次数。flags
: 标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。
常用的匹配规则总结表
\w
匹配字母数字及下划线\W
匹配非字母数字及下划线\s
匹配任意空白字符,等价于 [\t\n\r\f].\S
匹配任意非空字符\d
匹配十进制数字,等价于 [0-9]\D
匹配任意非数字\A
匹配字符串开始\Z
匹配字符串结束,如果是存在换行,只匹配到换行前的结束字符串\z
匹配字符串结束\G
匹配最后匹配完成的位置\n
匹配一个换行符\t
匹配一个制表符.
除换行外任意一个字符^
匹配字符串的开头$
匹配字符串的末尾.
匹配任意字符,除了换行符[...]
用来表示一组字符,单独列出:[amk] 匹配 'a','m' 或 'k'[^...]
不在 [] 中的字符:[^abc]
匹配除了 a,b,c 之外的字符。*
匹配 0 个或多个的表达式。+
匹配 1 个或多个的表达式。?
匹配 0 个或 1 个由前面的正则表达式定义的片段,非贪婪方式{n}
精确匹配 n 个前面表达式。{n,}
至少n次{n, m}
匹配 n 到 m 次由前面的正则表达式定义的片段,贪婪方式a | b
匹配 a 或 b( )
匹配括号内的表达式,也表示一个组
修饰符总结
re.I
使匹配对大小写不敏感re.L
做本地化识别(locale-aware)匹配re.M
多行匹配,影响^
和$
re.S
使.
匹配包括换行在内的所有字符re.U
根据Unicode字符集解析字符。这个标志影响\w, \W, \b, \B
re.X
该标志通过给予你更灵活的格式以便你将正则表达式写得更易于理解。
"p.*y"#贪婪模式
"p.*?y"#懒惰模式,精准