正则表达式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('awb','a_b a3b aEb a*b'))  #['a_b', 'a3b', 'aEb']

#2、s匹配空字符,  S匹配非空字符
# print(re.findall('s','a b
c	'))  #[' ', '
', '	']
# print(re.findall('S','a b
c	'))  #['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、
匹配换行符   	 匹配制表符
# print(re.findall('
','a12
3bd
dfe4'))  #['
', '
']
# print(re.findall('	','a12	3b	dd	fe4')) #['	', '	', '	']

#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也不能匹配,
换行符也不能匹配,但是加上re.S就能匹配出换行符
# print(re.findall('a.c','abc a1c a*c a|c abd aed ac a
c'))  #['abc', 'a1c', 'a*c', 'a|c']
# print(re.findall('a.c','abc a1c a*c a|c abd aed ac a
c',re.S)) #['abc', 'a1c', 'a*c', 'a|c', 'a
c']

#8、[]匹配任意一个字符。相比点的是可以指定需要匹配哪个字符【12】就是匹配出1或者2的
    #[1,2
] :就是匹配出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
c'))  #['a2c', 'a1c']
# print(re.findall('a[0-9]c','a2c a1c a*c a|c a21c a2d ac a
c')) #['a2c', 'a1c']
# print(re.findall('a[0-9a-zA-Z]c','aHc a1c a*c a|c a21c a2d ac a
c')) #['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','ac'))  #匹配不到  []
# print(re.findall('a\\c','ac'))  #['a\c']
# ##r代表告诉解释器使用rawstring,即原生字符串,把我们正则内的所有符号都当普通字符处理,不要转义
# print(re.findall(r'ac','ac'))  #[]
# print(re.findall(r'a\c','ac')) #['a\c']

 

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

原文地址:https://www.cnblogs.com/wangkc/p/6938427.html