码迷,mamicode.com
首页 > 编程语言 > 详细

python学习day12

时间:2018-03-18 14:57:59      阅读:180      评论:0      收藏:0      [点我收藏+]

标签:pre   one   nbsp   gpo   pytho   python   表示范围   ref   class   

正则表达式的学习

 

#codeing:UTF-8
#__author__:Duke
#date:2018/3/17/017 23:29
import re

#方法一  findall  全找
ret = re.findall(w\w{2},hello world)
print(ret)

# 元字符  11个
# .  通配符
ret = re.findall(w..,hello world)  # w..  点点任意指代,一个代指一个字符
print(ret)
ret = re.findall(w.l,hello w\rld)  # w..  点点任意指代,一个代指一个字符
print(ret)   #  不能指代“\"字符

# ^   尖角符
ret = re.findall("^h...o","hjasdfhello")   #只从开始匹配
print(ret)

#  $  dollor  符号
ret = re.findall("d..e$","hjasdukefhflle")   #只从末尾匹配
print(ret)

#  * 重复匹配   [0  无穷)个
ret = re.findall("du*","hjasdukefhfllfdukeeerffrefwegduuuuekw")   #只从末尾匹配
print(ret)

#  + 重复匹配   [1  无穷)个
ret = re.findall("du+","hjasdukefhfllfdkeeerffrefwegduuuuekw")
print(ret)   #至少一个u

# #  + 重复匹配   [1  无穷)个
ret = re.findall("du+","hjasdukefhfllfdkeeerffrefwegduuuuekw")
print(ret)   #至少一个u

#  ?   0或则1个 d
ret = re.findall("d?u","hjasdukefhfllfdkeeerffrefwegduuuuekw")
print(ret)

# { }  在区间内均可
ret = re.findall("du{1,2}","hjasdukefhfllfdkeeerffrefwegduuuuekw")
print(ret)   #贪难匹配,按最多的匹配
# 结论:* =={0,+无穷}   + == {1,+无穷}    ?== {0,1}

# []   字符集
ret = re.findall(a[c,d,e,s,]x,asx)   #是 or 意思
print(ret)

ret = re.findall([a-z],asx)   # - 表示范围
print(ret)

#     注意 [] 字符集  :取消元字符的作用、  (  \  ^  - )这三个除外
ret = re.findall([w,,],awdx*,)   #  *变为普通字符
print(ret)

ret = re.findall([^a],awdx*,)   #  ^  取补集  即为除  a 的元素
print(ret)

ret = re.findall([^a,w],awdx*,)   #  []  中的全部元素非  包括,
print(ret)  #[‘d‘, ‘x‘, ‘*‘]

#  \  斜杠
#斜杠后的元字符 去除特殊功能
#斜杠后的一些普通字符实现特殊功能
#  \d  表示数字  [0,9]
print(re.findall(\d{11},hqfuhi8712648721485))   #匹配11个数字
# [‘87126487214‘]
#  \D 表示[^0=9]
print(re.findall(\D{5},hqfuhi8712648721485))   #匹配5个字符
# # [‘hqfuh‘]
# #  \s 表示任意空字符]
print(re.findall(\s,hqfu\thi87 1264\r8721485))
# # [‘\t‘, ‘ ‘, ‘\r‘]
# #  \S 表示任意非空字符]
print(re.findall(\S,hqfu\thi87 1264\r8721485))
# [‘h‘, ‘q‘, ‘f‘, ‘u‘, ‘h‘, ‘i‘, ‘8‘, ‘7‘, ‘1‘, ‘2‘, ‘6‘, ‘4‘, ‘8‘, ‘7‘, ‘2‘,
#  \w 表示任意数字  字母  字符]
#  \W 表示任意非数字  字母  字符]
#  \b 表示特殊字符的边界
print(re.findall(r\bi,hello i an duke))

  #\+
ret = re.search(a+,aaawdx*,)   #
print(ret.group())  #aaa
ret = re.search(a\+,aaawdx*,)   #
print(ret)  #None

# 两种方法解决标红
ret = re.findall(r\\,aaawdxD:\c)   #
print(ret)  #[‘\\‘]
ret = re.findall(\\\\,aaawdxD:\c)   #
print(ret)  #[‘\\‘]

#   用结果理解
ret = re.search(r\bduke,duke)   #  r表示原生字符串
print(ret.group())  #duke
ret = re.search(\bduke,duke)   #  r表示原生字符串
print(ret)  #None

#  ()做分组   |
print(re.search((as)+,sdjkasf).group())  #as
print(re.search((as+),sdjkasf).group())  #as
print(re.search((as)|3,sdj3kas3f3).group())  #整体或
print(re.findall((as)|3,sdj3kas3f3) ) #[‘‘, ‘as‘, ‘‘, ‘‘]

# #用于文件路径
ret = re.search((?P<id>\d{3})/(?P<name>\w{3}),dghwwweeejyaf123/ooo)
print(ret.group())
print(ret.group(id))
print(ret.group(name))

# 二:re  的方法
#findall()  :返回全部的结果,以list的形势
# re.search()  :返回一个对象 ,对象通过 group方法返回结果
# re.match()   只在字符串开始开始匹配  ,返回的也是一个对象  group
# re.split()  :
print(re.split([k,s],dukehsijik))   #这个很重要
print(re.split([k,s],dskehsijik))   #注意这个的分法

#sub()  替换
print(re.sub(d..e,haha,jiewjfrewdukeshjs))
principle= re.compile(d..e)  #编译规则
ret = principle.findall(iewjfrewdukeshjs)
print(ret)   #[‘duke‘]

 

python学习day12

标签:pre   one   nbsp   gpo   pytho   python   表示范围   ref   class   

原文地址:https://www.cnblogs.com/duke77--null/p/8595319.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!