正则表达式的定义和目的:
正则表达式是一个特殊的字符序列,利用事先定义好的一些特定字符以及它们的组合组成一个“规则”,检查一个字符串是否与这种规则匹配来实现对字符的过滤或匹配。
re模块中findall()方法以列表的形式返回所有能匹配的子串,如果没有找到匹配的,则返回空列表。
元字符:
-
“.”:表示除换行符以外的任意字符。与“.”类似(但不相同)的一个符号是“\S”,(大写)表示不是空白符的任意字符
例:
s='Hello! My name is Jenny.' re. findall( r,'n.',s) [ na, nn ]
#匹配i后面跟除换行符以外的任意字符的形式 -
“[]”:指定字符集,此时元字符在方括号中不起作用
s='Hello! My number is xx001.' re. findall( r'xx[0-9]', s) [ xx001 ]
-
“^”:匹配行首,匹配后面的字符开头的字符串
-
“ ” : 匹 配 行 尾 , 匹 配 以 ”:匹配行尾,匹配以 ”:匹配行尾,匹配以之前的字符结束的字符串
-
“\”:反斜杠后面可以加不同的字符以表示不同的特殊意义
①\b匹配单词头或单词尾;
②\B与\b相反,匹配非单词头或单词尾;
③\d匹配任何十进制数;相当于[0-9];
④\D与\d相反,匹配任何非数字字符,相当于[^0-9];
⑤\s匹配任何空白字符,相当于[\t\n\r\f\v];
⑥\S与\s相反,匹配任何非空白字符,相当于[^\t\n\r\f\v];
⑦\w匹配任何字母、数字或下画线字符,相当于[a-zA-Z0-9_];
⑧\W与\w相反,匹配任何非字母、数字和下画线字符,相当于[^a-zA-Z0-9_];
⑨也可以用于取消所有的元字符:\、[。
⑩这些特殊字符都可以包含在[]中。如:[\s,.]将匹配任何空白字符、",“或”."。 -
“”:匹配位于之前的字符或子模式的0次或多次出现
例:
s='a ab abb abbb abbbza' re.findall( r'ab*',s) [a,ab,abb, abbb,abbb,a]
-
“+”:匹配位于+之前的字符或子模式的1次或多次出现
s='a ab abb abbb abbbza' re.findall( r'ab+',s) [a,ab,abb, abbb,abbb,a]
-
“?”:匹配位于?之前的0个或1个字符(最小模式,非贪心模式)
-
“{m,n}”:表示至少有m个重复,至多有n个重复,m,n均为十进制数
①忽略m表示0个重复,忽略n表示无穷多个重复。
②{0,}等同于*;{1,}等同于+;{0,1}与?相同。但是如果可以的话,最好使用*、+、或?
虽然通过re模块可以使用正则表达式处理字符串,但是正则表达式对象提供了更多的功能,可以查阅相关资料了解更多