re

# res='helelo wee'.replace('e','s',3)    #the first count will replace,前三个将被替换,默认是所有的被替换
# # print(res)
# #
# # res='hello'.find('ll',0,4)  #查找范围[0:4],找到后返回第一个的index
# # print(res)

hslslo wse
2


import re # print(re.findall('w','hello123')) #所有的字母数字下划线 # print(re.findall('W','hello@wu')) #所有的特殊字符 # ['h', 'e', 'l', 'l', 'o', '1', '2', '3'] # ['@'] # print(re.findall('d','hello123')) # print(re.findall('D','hello123')) # # ['1', '2', '3'] # ['h', 'e', 'l', 'l', 'o'] # print(re.findall('he$','ssshe')) # 以 ‘he’结尾 # print(re.findall('^he','hesss')) #以‘he’开头 # print(re.findall('^he$','hessshe')) #只找'he' # ['he'] # ['he'] # [] .默认指任意一个字符(除换行) ‘aXb’ x可以是空格 # print(re.findall('a.b','amb')) # print(re.findall('a.b','alb a*b a ab a bb a aaab')) # print(re.findall('a.b','a b')) # print(re.findall('a.b','a b',re.DOTALL)) #支持换行 # # ['amb'] # ['alb', 'a*b', 'a b', 'aab'] # [] # ['a b'] * 前面的一个字符没有,重复0次,或n次 #a*b===b,ab,aaaab # print(re.findall('a*b','amb')) # print(re.findall('a*b','alb a*b a ab a bb a aaab')) #ab 满足二个(b,ab)取长的ab,贪婪 # print(re.findall('a*b','a b')) # # ['b'] # ['b', 'b', 'ab', 'b', 'b', 'aaab'] # ['b']

#a?b==b,ab       ?前面的一个字符没有,或者只有一次
print(re.findall('a?b','amb'))
print(re.findall('a?b','alb a*b a ab a bb a aaab')) #取长不取短
print(re.findall('a?b','a b'))


['b']
['b', 'b', 'ab', 'b', 'b', 'ab']
['b']

#a+b==ab,aaaab   #前面的一个字符重复一次或者多次
print(re.findall('a+b','amb'))
print(re.findall('a+b','alb a*b a ab a bb a aaab'))
print(re.findall('a+b','a b'))

[]
['ab', 'aaab']
[]


print(re.findall('d+.?d*','adf123dsfds23..34fasf4fd5'))
#d+:一个或者多个数字,至少有一个
.?:小数点,可以没有或者最多有一个
d*:0个或者多个数字,不限定

['123', '23.', '34', '4', '5'] #不会有.34

#a.*b==a..................b .代表任意字符(除换行)
print(re.findall('a.*b','ab acb annnbb ajljjlkub adfbfdsfsf'))

['ab acb annnbb ajljjlkub adfb'] #贪婪匹配,返回最长的

print(re.findall('a.*b','ab ac
b annnbb ajljjlkub adfbfdsfsf'))    #
 打断
['ab', 'annnbb ajljjlkub adfb'] #返回2个

#a.*?b===ab,a.b,a..b,a....b 谁先找到就是谁 ?前面的字符可以没有
print(re.findall('a.*?b','abfdfb'))
print(re.findall('a.*?b','acbjkljbbbb')) #非贪婪,返回最短的那个
['ab']
['acb']

print(re.findall('ab{2}','abbb abbbbbbb'))      #只要有2个的,其他不要
print(re.findall('ab{2,4}','ab abb abbb abbbb abbbbbbb')) #有2个到4个都可以 ,其他不要
print(re.findall('ab{1,}','a ab abbbb ')) #1 最少要有一个 ab
print(re.findall('ab{0,}','a ab abbb')) #0 可以一个都没有 a

['abb', 'abb']
['abb', 'abbb', 'abbbb', 'abbbb']
['ab', 'abbbb']
['a', 'ab', 'abbb']

print(re.findall('a[w*-]b','ab awb a*b a-b a**b aw*b'))
#[] 里面的只能选一个(必须选一个,不能为空ab)
print(re.findall('a[^*_&]b','ab anb a*b a_b')) #【】里面的一个不选,(但是为空也不行 ab也不满足条件)
['awb', 'a*b', 'a-b']
['anb']

print(re.findall(r'a\c','ac'))      #如果不加r ,正则解析成‘ac’,python 继续解析c发现没有c报错;加r后,等于解释器不再解析了
['a\c']
()分组

print(re.findall('ab+','ababab123'))
print(re.findall('(ab)+123','ababab123'))
print(re.findall('(?:ab)+123','wkababab123'))
print(re.findall('href="(.*?)"','<a href="http://www.baidu.com">haha</a>'))
#['http://www.baidu.com'] 默认只显示()里面的内容,()是个个体
print(re.findall('href="(?:.*?)"','<a href="http://www.baidu.com">haha</a>'))#?:显示所有要找的字符串‘href=...’,等于从href开始算,是整体

['ab', 'ab', 'ab']
['ab']
['ababab123']
['http://www.baidu.com']
['href="http://www.baidu.com"']

print(re.findall('compan(?:y|ies)','Too many companies have gone bankrupt, and the next one is my company'))
print(re.findall('compan(y|ies)','Too many companies have gone bankrupt, and the next one is my company'))


['companies', 'company'] #整体
['ies', 'y'] #个体

 
原文地址:https://www.cnblogs.com/wuxi9864/p/9926014.html