python模块学习之re模块

.   (点) 在默认模式,匹配除了换行的任意字符
^   匹配字符串的开头
$   匹配字符串的结尾


*       重复零次或多次
+       重复一次或多次
?      重复零次或一次
{n}     重复n次
{n,}    重复n次或多次
{n,m}   重复n到m次

其中* + ?都是贪婪匹配即尽可能多的匹配,在其后直接加?后就可以变为非贪婪匹配

[...]    匹配其中的字符,^放在开头表示非

\w    匹配字母或数字或下划线
\s    匹配任意的空白符
\d    匹配数字
\n    匹配一个换行符
\W    匹配非字母或数字或下划线
\D    匹配非数字
\S    匹配非空白符
a|b   匹配字符a或字符b

 

例子

s='abcdef'
print(re.findall('^a',s)) #匹配以a开头的一个字符
#['a']

s='abcdef'
print(re.findall('^a.*',s)) #匹配a开头后面有任意字符
#['abcdef']

s='abcdef'
print(re.findall('^a.*?',s))#加?变为非贪婪模式


 ()元字符,分组

 也就是分组匹配,()里面的为一个组也可以理解成一个整体

 如果()后面跟的是特殊元字符如   (adc)*   那么*控制的前导字符就是()里的整体内容,不再是前导一个字符

str="a3a3ddd"
print(re.search("(a3)+",str).group()) #匹配一个或多个a3
 

 

posted @ 2020-10-27 17:15  泉love水  阅读(81)  评论(0编辑  收藏  举报