正则表达式 re

#字符串方法全量查找

s = 'hello world'

s.find('ll')    #返回索引值

s.replace('ll','xx')

s.split('w')   #以w为分割符 返回['hello ','orld']

 

#正则表达式

import re

 

#完整匹配

re.findall('匹配的字符','待匹配字符串')  #返回匹配成功的字符

 

#元字符

# .  通配符匹配所有的字符,一个点只能匹配任意一个字符

re.findall('w..l','hello world')

#^ 尖角符 只在字符串的开始进行匹配,放在开头

re.findall('^h..o','weqqhiio') #匹配空

# $ 只在字符串的结尾进行匹配,放在结尾

re.findall('h..o$','weqqhiio') #匹配hiio

# * 重复匹配,*前面的字符重复[0,∞](无穷)次    等价于{0,∞} {0,}

# +重复匹配,+前面的字符重复[1,无穷]次              等价于{1,∞} {1,}

# ?重复[0,1]次 等价于{0,1}

#{} 自定义重复次数

re.findall('a{5}b','aaaaab')  #返回['aaaab']

re.findall('a{1,3}b','aaaaab')  #返回['aaab']

#[]字符集,取消元字符的特殊功能(除外\ ^ -) 

re.findall('a[c,d]b','acb')  #返回['acb'].         c与d 或的关系

re.findall('a[a-z]b','acb')  #返回['acb'].        a-z之间的任意字母

re.findall('a[c,*]b','a*b')  #返回['a*b']

re.findall('[1-9,a-z,A-Z]','12tyAS') #返回['1','2','t','y','A','S']

re.findall('[1-9a-zA-Z]','12tyAS')   #返回['1','2','t','y','A','S']

re.findall('[^t]','12tyAS') #返回['1','2','y','A','S'].     ^放在[]是取反的意思

re.findall('[^4,5]','12ty45AS') #返回['1','2','y','A','S'].     非4和非5的意思

 

# \  反斜杠后面跟元字符去除特殊功能            ---re语言 需要用\\解释\,python需要用\\或者r 来解释re的\\,所以解释\是\\\\或者r'\\'

#\ 反斜杠后面跟普通字符有特殊意义(一部分普通字符)

#\d 匹配任何十进制整数,相当于[0-9]

#\D 匹配任何非数字字符,相当于[^0-9]

#\s 匹配任何空白字符,相当于类[ \t\n\r\f\v]

#\S 匹配任何非空白字符,相当于类[^ \t\n\r\f\v]

#\w 匹配任何字母数字字符,相当于类[a-zA-Z0-9_] 

#\W 匹配任何非字母数字字符,相当于类[^a-zA-Z0-9_]

#\b 匹配一个特殊字符边界

 

ret = re.search('x.','ax1x2')        #查找出一个对象

print(ret.group())        #re.search().group() 匹配出第一个满足条件的结果    

 

# () 分组    | 或

re.search('(as)+','aedfasas').group()     #asas

re.search('(as)|3','aedfas3').group()     #as

re.search('(as)|3','aedf3as').group()     #3

 

 

 

#总结:findall()  所有结果都返回到一个列表里面

#search() 返回匹配到的第一个对象object,对象可以通过group()取得结果

#match()  只在字符串开始进行匹配,返回匹配到的第一个对象object,对象可以通过group()取得结果

#split()  灵活运用元字符分隔字符串

#sub() 替换,类似于字符串的replace()方法  s.sub('需要替换的字符','替换后的字符','待替换的目标字符串')

#compile() 定义一个规则对象,多次查找,替换等操作时直接可以使用该对象进行操作

obj = re.compile('\.com')

ret = obj.findall('daf\.comdaf')

print(ret)

ret1 = obj.findall('wwww\.comdaf')

print(ret1)

 

posted @ 2020-12-07 17:02  密语笔记  阅读(103)  评论(0)    收藏  举报