正则表达式

# 正则表达式是用来干嘛的
# 1,匹配   字符串
# findall() 所有结果都会返回到一个列表里边
# search() 返回匹配到的第一个对象,对象可以调用group()返回结果
# matcj() 只在字符串开始匹配,返回一个对象
import  re
# s = 'hello world'
# print(s.find('ll'))  #第一个字符的索引
# set = s.replace('ll','xx')
# print(set)
# print(s.split(' '))
# string 提供的方法是完全匹配

#引入正则:进行模糊匹配
# print(re.findall('w\w{2}l','hello world'))  #['worl']
# ret = re.findall('alex','djsaifjasoalexijfasoifjaalex')
# print(ret)    #['alex', 'alex']
# 正则表达式中的元字符

# . 通配符
# ret = re.findall('w..l','hello world')
# print(ret)  #['worl']  . 只能代表任意一个字符,除换行符\n

# ^
# ret = re.findall('^h...o','hafsosfahello')
# print(ret)  #['hafso']  只匹配开始符合的

# $
# ret = re.findall('a..x$','afjxjfiewalexfsalex')
# print(ret)  #['alex']  只匹配最后四个字符符不符合

# * :重复匹配  匹配0个或多个
# ret = re.findall('a.*li','sdwadsaajijisfsflixli')
# print(ret)  #['adsaajijisfsflixli']  贪婪匹配

# + :重复匹配  匹配1个或多个
# ? :匹配0或1次
# ret = re.findall('a?b','aaaabhsdsdabdbsd')
# print(ret)  #['ab', 'ab', 'b']

# {}:  {1,} 表示{1,+oo}
# ret = re.findall('a{5}b','asdasdaaaaabdasda')
# print(ret)   #['aaaaab']
# ret = re.findall('a{1,3}b','asdasdaaaaabdasda')
# print(ret)  #['aaab']  先取最多的三次a

# [] :字符集    取消元字符的特殊功能(- \ ^)
# ret = re.findall('a[c,d,e]x','aexadxacx')
# print(ret)    #['aex', 'adx', 'acx']  匹配次c,d,e任意匹配一个
# ret = re.findall('[a-z]','aex')
# print(ret)  #['a', 'e', 'x']
# ret = re.findall('[w,*]','a*ex')
# print(ret)  #['*']

# ^ 放在[]里 取反
# ret = re.findall('[^4,5]','ida5dAa4sd')
# print(ret)  #['i', 'd', 'a', 'd', 'A', 'a', 's', 'd']
# \ : 后边跟元字符去除特殊功能
# 后边跟普通字符实现特殊功能

# \d  匹配任何十进制数 相当于[0,9]
# \D  匹配任何非数字字符  相当于[^0-9]
# print(re.findall('\d{8}','sda1487464654687452'))
# ['14874646', '54687452']

# \s 匹配任何空白字符 相当于 [\t\n\r\f\v]
# \S 匹配任何非空白字符 相当于[^ \t\n\r\f\v]
# print(re.findall('\sasd','fak asd'))  #[' asd']
# print(re.findall('\Sasd','fakasd'))  #['kasd']

# \w 任何字母数字字符  相当于 [a-z0-9A-Z]
# \W 任何非数字字母字符  相当于[^ a-z0-9A-Z]
# print(re.findall('\w','fak d')) #['f', 'a', 'k', 'd']

# \b 匹配一个特殊字符边界(除字母数字字符外全算特殊字符)
# print(re.findall(r'I\b','hello,I am a LI$T')) #['I', 'I']

#####################

# 匹配出第一个满足条件的结果
# print(re.search('sb','sadsbassb'))
# <_sre.SRE_Match object; span=(3, 5), match='sb'>
# ret = re.search('sb','sadsbassb')
# print(ret.group())  #sb
# ret = re.search('a\.','a.gj').group()  # a.
# print(ret)  # a.

# print(re.findall(r'\bbsad','bsad'))  #['bsad']
# print(re.findall('\\bbsad','bsad'))  #['bsad']

#() |
# print(re.search('(as)+','sadasas').group()) # asas
# print(re.search('(as)|3','gas3').group()) # as
# 匹配as或3

# ret = re.search('(?P<id>\d{3})/(?P<name>\w{3})','sd444/ooo')
# print(ret.group('id'))   #444
# print(ret.group('name'))  #ooo

# ret = re.match('asd','fsfsasd')
# print(ret)

# ret = re.split('[j,s]','sdjksal')  #*****
# print(ret)  #['', 'd', 'k', 'al'] 先分j 再分s 中间加上''
# ret = re.sub('a..x','s..b','hsaalexdd')
# print(ret)  # hsas..bdd

# obj = re.compile('\.com')
# ret = obj.findall('dsaasd.comcas')
# print(ret)  #['.com']

 

上一篇:41、python基础学习-re模块


下一篇:Python正则表达式中re.S作用