正则表达式re模块

Posted 鸿飞冥冥

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正则表达式re模块相关的知识,希望对你有一定的参考价值。

#  在线调试工具:  tool.oschina.net/regex/#
import re
#w匹配字母数字下划线   W:非字母数字下划线
# print(re.findall(\'\\w\',\'as213df_*|d\'))  #[\'a\', \'s\', \'2\', \'1\', \'3\', \'d\', \'f\', \'_\', \'d\']
# print(re.findall(\'\\W\',\'as213df_*|d\'))  #[\'*\', \'|\']
# print(re.findall(\'a\\wb\',\'a_b a3b aEb a*b\'))  #[\'a_b\', \'a3b\', \'aEb\']

#2、\\s匹配空字符,  S匹配非空字符
# print(re.findall(\'\\s\',\'a b\\nc\\t\'))  #[\' \', \'\\n\', \'\\t\']
# print(re.findall(\'\\S\',\'a b\\nc\\t\'))  #[\'a\', \'b\', \'c\']


#3.\\d 匹配数字   \\D 匹配非数字
# print(re.findall(\'\\d\',\'a123bddfe4\'))  #[\'1\', \'2\', \'3\', \'4\']
# print(re.findall(\'\\D\',\'a123bdd@fe4\'))  #[\'a\', \'b\', \'d\', \'d\', \'@\', \'f\', \'e\']

#4、\\n匹配换行符   \\t 匹配制表符
# print(re.findall(\'\\n\',\'a12\\n3bd\\ndfe4\'))  #[\'\\n\', \'\\n\']
# print(re.findall(\'\\t\',\'a12\\t3b\\tdd\\tfe4\')) #[\'\\t\', \'\\t\', \'\\t\']

#5、^  只匹配字符串的开头是否以某某开头,如果是则匹配到,不是为空
# print(re.findall(\'h\',\'hello egon hao123\'))   #[\'h\', \'h\']
# print(re.findall(\'^h\',\'hello egon hao123\'))  #[\'h\']


#6、  str$   是否以某某结尾,注意这里是放在要匹配的字符的右边,……是放在左边
# print(re.findall(\'3\',\'hello e3gon hao123\')) #[\'3\', \'3\']
# print(re.findall(\'3$\',\'3hello egon hao123\')) #[\'3\']

#7、 . 点  :匹配任意一个字符ac也不能匹配,\\n换行符也不能匹配,但是加上re.S就能匹配出换行符
# print(re.findall(\'a.c\',\'abc a1c a*c a|c abd aed ac a\\nc\'))  #[\'abc\', \'a1c\', \'a*c\', \'a|c\']
# print(re.findall(\'a.c\',\'abc a1c a*c a|c abd aed ac a\\nc\',re.S)) #[\'abc\', \'a1c\', \'a*c\', \'a|c\', \'a\\nc\']

#8、[]匹配任意一个字符。相比点的是可以指定需要匹配哪个字符【12】就是匹配出1或者2的
    #[1,2\\n] :就是匹配出1或者是逗号或者是2或者是换行符这四个字符
    #【】可以匹配范围【0-9】:匹配从0到9   。-放到中间就是范围,放到其他地方就是符合
    #[^0-9]:^放到【】里面代表是非的意思即只要不是0-9的都匹配出来,不是开头的意思
# print(re.findall(\'a[1,2]c\',\'a2c a1c a*c a|c a21c a2d ac a\\nc\'))  #[\'a2c\', \'a1c\']
# print(re.findall(\'a[0-9]c\',\'a2c a1c a*c a|c a21c a2d ac a\\nc\')) #[\'a2c\', \'a1c\']
# print(re.findall(\'a[0-9a-zA-Z]c\',\'aHc a1c a*c a|c a21c a2d ac a\\nc\')) #[\'aHc\', \'a1c\']

#9、 *+?{n,m}  都是重复匹配的意思

#  *代表左边的字符出现0次或无穷次
# print(re.findall(\'ab*\',\'acccc\')) #[\'a\']
# print(re.findall(\'ab*\',\'abbbb\')) #[\'abbbb\']

#  + 代表左边字符出现一次或无穷次
# print(re.findall(\'ab+\',\'acccc\')) #[]
# print(re.findall(\'ab+\',\'abbbb\')) #[\'abbbb\']
# print(re.findall(\'ab+[123]\',\'abbb1\'))  #[\'abbb1\']

#  {n,m} 匹配左边的字符出现n次到m次
# print(re.findall(\'ab{3}\',\'abb abbb abbbb\')) #[\'abbb\', \'abbb\']
# print(re.findall(\'ab{3,4}\',\'abb abbb abbbbb\'))  #[\'abbb\', \'abbbb\']
# print(re.findall(\'ab{3,}\',\'abb abbb abbbbb\'))  #i匹配3次到无穷次

# ? :?左边的字符匹配0次或1次
# print(re.findall(\'ab?c\',\'ac abc aec a1c\'))  #[\'ac\', \'abc\']


#10、 .*  点*   贪婪匹配,匹配任意多个字符
# print(re.findall(\'a.*c\',\'ac abc adfdc\')) #只有一个结果  [\'ac abc adfdc\']

#11、 。*? 非贪婪匹配  :这里的?是转义的意思,转义为非贪婪匹配
# print(re.findall(\'a.*?c\',\'ac abc adfdc\'))  #从左到右匹配到算是一次匹配成功[\'ac\', \'abc\', \'adfdc\']


#12、()  匹配括号里面的内容,表示分组
# print(re.findall(\'compan(y|ies)\',\'Too many companies have gone ban\'))  #[\'ies\']
# print(re.findall(\'compan(?:y|ies)\',\'Too many companies have gone ban\')) #[\'companies\']
#这里的?:语法,转义匹配出company或者companies
# ?:打印出真实的结果,不加则只打印出括号内的字符
# print(re.findall(\'ab+123\',\'ababab123\'))  #[\'ab123\']
# print(re.findall(\'(ab)+123\',\'ababab123\'))  #[\'ab\']
# print(re.findall(\'(?:ab)+123\',\'ababab123\')) #[\'ababab123\']


# print(re.findall(\'a\\\\c\',\'a\\c\'))  #匹配不到  []
# print(re.findall(\'a\\\\\\\\c\',\'a\\c\'))  #[\'a\\\\c\']
# ##r代表告诉解释器使用rawstring,即原生字符串,把我们正则内的所有符号都当普通字符处理,不要转义
# print(re.findall(r\'a\\c\',\'a\\c\'))  #[]
# print(re.findall(r\'a\\\\c\',\'a\\c\')) #[\'a\\\\c\']

 

 

 

 

参考博客:http://www.cnblogs.com/linhaifeng/articles/6384466.html

以上是关于正则表达式re模块的主要内容,如果未能解决你的问题,请参考以下文章

第43天python学习re模块学习

常用模块-正则re

python成长之路第三篇_正则表达式

python成长之路第三篇_正则表达式

python知识-正则表达式re模块

正则表达式