#——author:"Jay Zhu"
#date: 2018/6/27
#正则表达式用来匹配字符串。 普通字符,元字符
#元字符有11个
# .代替任何元素。只能代替一个元素。不能代替换行符 通配符
# ^
s = 'hello wold'
print(s.find('ll')) #拿到索引位置。 #2
ret = s.replace('ll','xx')
print(ret) #hexxo word
ret = s.split(' ')
print(ret) #['hello', 'word']
#String 提供的方法是完全匹配。
import re
s = 'hello wold'
ret = re.findall('w\w{2}l','hello world') #w..l
print(ret)
# .代替任何元素。只能代替一个元素。不能代替换行符 通配符
ret = re.findall('w..l','hello world')
print(ret)
# # ^ 只对字符串的开始进行匹配。尖叫符
print(re.findall('^h...o','hjasoflhello'))
#
# #$ 从结尾开始。
print(re.findall('z.f$','hjasoflzlfhellozlf'))
#
# #*:重复匹配[0,+00]
#
print(re.findall('zlf*','hjasoflzsdfasdfasdfasdflfhellozlfbaaaaaaaazlf'))
#
# # +:重复匹配[1,+oo]
# print(re.findall('ba+','hjasoflzsdfasdfasdfasdflfhellozlfbzlf'))
# # ? [0,1] 只能去0或者1次
print(re.findall('a?b','aaaaaaaaabb'))
#{}
print(re.findall('a{1,2}b','abaaaabaabaabbaaaaaaab'))#贪婪匹配:安装最多的区,有多的不取少的。
# #[]:字符集 取消元字符的特殊功能 (\ ^ -)例外
#
print(re.findall('a[c,d]x','adxacxasdfsafsadfacdsadfsadfacx'))
print(re.findall('[a-z]','adx'))
print(re.findall('[a,*]','adxzzz*')) #取消元字符的特殊功能
print(re.findall('[1-9a-zA-Z]','adxzzz*'))
print(re.findall('[1-9,a-z,A-Z]','adxzzz*'))
print(re.findall('[^x]','adxzzz*')) #尖叫号放在字符集里面,是取反
#
# # \ :后边跟元字符,去除特出含义。后边跟普通字符,实现特出功能
#
# # \d 【0-9】10进制数字
# # \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 单词和空格间的位置。
# print(re.findall(r'I\b','hello,I am LIST'))
###search匹配出第一个满足条件的结果
print(re.search('sb','sasdfasdfasdfsbsb,sb'))#<_sre.SRE_Match object; span=(13, 15), match='sb'>
print(re.search('sb','sasdfasdfasdfsbsb,sb').group()) #sb
#
print(re.findall(r'D\\c', 'adhfD\c'))
print(re.search(r'\bblow','blow').group())
#()| 分组
print(re.search('(as)+','asassasssassasasas').group())
print(re.search('(as)|3','asassasssassasasas3').group())
print(re.search('(as)|3','3asassasssassasasas3').group())
#?P<...> 给一个内容定义一个名字。
ret = re.search('(?P<id>\d{3})/(?P<name>\w{3})','weew34ttt123/ooo')
print(ret.group())
print(ret.group('id'))
print(ret.group('name'))
#正则表达式的方法:
# 1. findall() 所有结果都返回一个列表里。
# 2. search() 返回匹配到的第一个对象,对象可以调用group()方法,返回结果,不能为NONE
# 3. match() 只在字符串开始匹配
# 4. split()
print(re.match('asd','asdfhasd'))#<_sre.SRE_Match object; span=(0, 3), match='asd'>
print(re.match('asd','asdfhasd').group()) #asd
print(re.split('[j,s]','djksal'))
print(re.sub('j.*u','zhulingfeng','dasfhksahjaychou'))
obj = re.compile('\.com')
print(obj.findall('sdafsadf.com'))
Python3之正则表达式
最新推荐文章于 2021-02-09 16:26:05 发布