正则是用一些特殊含义的符号组合到一起来描述字符或者字符串的方法。python中内置了re模块。
import re stra=''' a1b2c3c4d5e6f./<>+_-{}[]123456 abcdefg !@#$%^&*() ''' #大小w的区别,大写W匹配出字符串以外所有值 a=re.findall("W",stra) print(a) #小写w匹配所有字符串,非符号 b=re.findall("w",stra) print(b) #s与S区别 print(re.findall('s','stra)#匹配出所有字符 print(re.findall('S',stra) #匹配除字符以外的其他元素 # 都是空,都可以被s匹配 print(re.findall('s',stra) # 与 print(re.findall(r' ',stra) print(re.findall(r' ',stra) #d与D print(re.findall('d',stra) #匹配所有数字 print(re.findall('D',stra) #不匹配任何数字 #A与 a=re.findall("As","stra")#匹配字符串开始字符 b=re.findall("a","stra")#匹配字符串末尾字符 #匹配大小写字母的方式 print(re.findall('[A-Z]',stra) #匹配出所有大写字母 print(re.findall('[a-z]',stra)#匹配出所有小写字母 #元字符的匹配使用 [],范围匹配,只能匹配单字符,且会匹配【】内所有的指定字符
.,只匹配一位字符,有且只有一个,可代表任意字符
?,匹配一位字符,可有可无
*,匹配任意字符,可有可无且不仅仅匹配一位
^,匹配行首,如果在[^]则表示为非
()分组匹配,匹配()内的字符,以组为单位
+,匹配一个或多个,有且必须有一位
|,范围匹配时的或操作, print(re.findall('compan(?:y|ies)','Too many companies have gone bankrupt, and the next one is my company')) 结果(['companies', 'company'])
贪婪匹配与非贪婪匹配
findall
:默认为贪婪匹配,就是会匹配字符中所有符合正则条件的结果
当在正则使用?时:例如
:re.findall(a.*?b,aqddddddddda1b) 结果为:aqb
re模块下的方法:
re.findall("正则",‘itemseq’)#返回的匹配结果放在列表中,
re.search("正则",‘itemseq’)#找到第一个匹配结果就返回,返回的匹配信息是一个对象,调用group方法得到匹配的字符串。
b=re.search("12345",stra)
print(b.group())
re.split('[ab]','abcd') #按照a分割得到‘’和bcd,在对b进行分割
re.sub('a','B','aaabcd')#替换匹配到的字符
re.subn('a','A','aaafff')#会匹配所有符合的值,并会携带匹配个数返回
一些简单的正则联系题
import re #匹配出df,并给出匹配了多少个 a=re.findall('af',"asdfjvjadsffvaadfkfasaffdsasdffadsafafsafdadsfaafd") print(a,len(a))
a=re.findall('d',"aslkdjwjkdj123dife94rew")