正则表达式 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)

浙公网安备 33010602011771号