正则表达式之模糊匹配\d、\D、\s、\S、[A-Z]、[a-z]、[a-zA-Z]、+、*、{n,m}、?、.、re.M、^和$等

模糊匹配:

\d:匹配一个数字(digit)

\D:匹配一个非数字

re.search(r"\d","abc123abc"),其中,r表示原字符,里面的\不需要做转义。

 

\w:匹配字母或数字

\W:匹配非字母且也是非数字的情况

 

\s:匹配一个空白字符,比如:空格、\n \r \t

\S:匹配一个非空白字符

 

[A-Z]:匹配大写字母

[a-z]:匹配小写字母

[a-zA-Z]:匹配大小写字母

 

尝试匹配多个:

+:匹配至少一个(可以匹配多个);

*:匹配0个或者多个;

{n,m}:匹配n个或者m个之间的个数都行;

?:表示匹配一个或0个;

带有量词的情况下,正则都会进行最多元素的匹配(正则表达式的贪婪性)。

抑制正则表达式的贪婪性,量词后面加?

.:表示出了回车之外的任意字符;

加个re.S可以实现.匹配回车,也就是匹配包括回车的所有字符;

开头和结尾的匹配:^ $

\b:单词边界,字符串的最前面和最后面,或者前面有空白字符;

re.M:把一个带有回车的字符串,当成多行字符串处理

re.search(r"\d+$","123\n456\n789",re.M)

|:或的关系,匹配其中一个就可以

 

 

*:匹配0个或者多个;

re.search(r"\d*","we2356bc").group(),当我们匹配w字符的时候,w字符的前面没有数字,没有数字就是0个数字,没有数字也满足\d*,因为*表示匹配0次或者多次。此处的\d*匹配到了w前面的空字符串。

 

 

?:表示匹配一个或0个;

 

 

 

{n,m}:匹配n个或者m个之间的个数都行;

 

 

.:表示出了回车之外的任意字符;

 

匹配大小写混合:[a-zA-Z],或者re.I都可以。re.I表示的就是忽略大小写的。

 

开头和结尾的匹配:

 

\b:单词边界,字符串的最前面和最后面,或者前面有空白字符;

 

 

 

re.M:把一个带有回车的字符串,当成多行字符串处理(比如,下面例子中第一行就满足了我匹配到结尾的数字了,所以就返回123了)

re.M:findall用的多一些,比如多行字符串的情况下我想匹配每一行结尾的数字;

re.search(r"\d+$","123\n456\n789",re.M)

 

 

re.findall(r"\d+$","abc123\ncde456\ndef789",re.M)

 

 

posted @ 2020-06-24 16:34  anna1210  阅读(14933)  评论(0编辑  收藏  举报