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