python之正则表达式

记号

说明 样例
literal 匹配字符串的值 foo
re1|re2 匹配正则表达式re1 或 re2 foo|bar
. 匹配任意字符(除换行符) b.b
^ 匹配字符串的开始 ^Dear
$ 匹配字符串的结尾 /bin/*sh$
* 匹配前面出现的正则表达式零次或多次 [A-Za-z0-9]*
+ 匹配前面出现的正则表达式一次或多次 [a-z]+
? 匹配前面出现的正则表达式零次或一次 goo+
{N} 匹配前面出现的正则表达式N次 [0-9]{3}
{M,N} 匹配重复出现M到N次的正则表达式 [0-9]{3,5}
[...] 匹配字符组里任意一个字符 [ahfj]
[..x-y..] 匹配从x到y中的任意字符 [0-9],[A-Za-z]
[^...] 不匹配字符集中出现的任一字符 [^A-Za-z]
(*|+|?|{})? 用于非贪婪模式 .*?[a-z]
(...) 匹配括号中的正则表达式,并保存为子组 ([0-9]{3})?,f(oo|u)bar
记号 说明 样例
d 匹配任何数字,和[0-9]一样 (D是d的反义:任何非数字符) datad+.txt
w 匹配任何数字字母字符,和[A-Za-z0-9]相同 (W是w的反义) [A-Za-z]w+
s 匹配任何空白符,和[ vf]相同,(S是s的反义) ofsthe
 匹配单词边界(B是的反义) The
n 匹配已保存的子组 price:16
c 逐一匹配特殊字符c ., \, *
A() 匹配字符串的开始(结尾) ADear
函数/方法 描述
compile(pattern, flags=0) 对正则表达式模式pattern进行编译,flags可选参数
match(pattern, string, flags=0) 用pattern匹配字符串string开头,如成功则返回匹配对象,否则返回None
search(pattern, string, flags=0) 在字符串string中搜索pattern的第一次出现,如成功则返回匹配对象,否则返回None
findall(pattern, string[,flags]) 在字符串string中搜索pattern的所有出现,返回匹配对象的列表
finditer(pattern, string[,flags]) 和findall相同,但返回的是迭代器
split(pattern, string, max=0) 根据pattern把string分割为一个列表,并返回
sub(pattern, repl, string, max=0) 把string中匹配到的pattern换成repl
subn(pattern, repl, string, max=0) 和sub相同,但并返回替换次数
group(num=0) 返回全部匹配对象(或第num个子组)
groups() 返回一个包含全部匹配的子组的元组

    正则表达式默认是贪心匹配的,如果正则表达式模式中使用到通配字,那它在按照从左到右的顺序求值时,会尽量“抓取”满足匹配的最长字符串。有时需要“抓取”最短字符串,因此就需要使用非贪心匹配。非贪婪操作符“?”,可以用在“*”,“+”,“?”的后面。

原文地址:https://www.cnblogs.com/Climbing-Snail/p/10264322.html