python之re模块

#正则表达式是用来干嘛的?
#匹配 字符串
# s="hello world"
# print(s.find("llo"))
# print(s.replace("ll","mm"))
# print(s.split("w"))

#string提供的方法是完全匹配
#引入正则表达式,进行模糊匹配
import re
# ret=re.findall("w\w{2}l","hello world")
# print(ret)
# red=re.findall("xiong","hfjihdjkjldnjxiongkhddfnhvjkndfkln")
# print(red)#其实这种不适用re,反倒用字符串的方法也可以,杀鸡用牛刀也不好


# 11元字符 "." "^" "$" "*" "?" "{}" "+" "[]" "|" "()" "\ "

#"."通配符 可以代指除了换行符之外的字符,不过"."只能代指一个东西,一个点代指一个字符
# ret=re.findall("w..l","hello world")
# print(ret)

# "^" 尖角符加了尖角符,就只以最开始的位置匹配
# ret=re.findall('^h...o',"hellodhufduh")
# print(ret)

#"$",代表从结尾开始匹配
# ret=re.findall("h...o$","dfjihhello")
# print(ret)

#"*"重复匹配[0,正无穷)
# ret=re.findall("x.*li","hjkdhjhjdhjjhxionglifhg")#*代表重复前面字符多次
# print(ret)

#"+"重复p匹配[1,无穷大)
# ret=re.findall("x.+li","hjkdhjhjdhjjhxionglifhg")#+代表重复前面字符多次,不过后面代替的字符个数必须大于一
# print(ret)
# ret=re.findall("x.+li","hjkdhjhjdhjjhxlifhg")#+代表重复前面字符多次,不过后面代替的字符个数必须大于一
# print(ret)#[]

#"?"重复匹配[0,1]
# ret=re.findall("a?b","abaadfdbaabaaa")#?代表重复前面字符多次,不过后面代替的字符个数在零到一之间
# print(ret)#['ab', 'b', 'ab']

#"{}"重复匹配,次数自定义
# ret=re.findall("a{3}b","abaadfdbasfadfjaaabaaa")#{}代表重复前面字符多次,不过后面代替的字符个数得自定义
# print(ret)#['aaab']
# ret=re.findall("a{1,3}b","abaadfdbasfadfjaaabaaa")#{}代表重复前面字符多次,不过后面代替的字符个数1到3次,不过里面机构有个贪婪匹配性质
# print(ret)#['ab', 'aaab']
#谈了匹配:在满足条件下的情况,取最多的个数
# 重复匹配结论 *等于[0,正无穷) "+"重复p匹配[1,无穷大) "?"重复匹配[0,1]


#"[]"字符集
# ret=re.findall('a[c,d]x',"acx")#[]里面字符之间有或的关系,可以在里面多选一 #[]取消原字符的特殊功能,除开(\ ^ -)
# print(ret)
# ret=re.findall('a[c,*]x',"acx")#[]里面的*就不再有重复的意思 #[]取消原字符的特殊功能
# print(ret)
#
# ret=re.findall('a[a-z]x',"acx")#a-z:表示从a到z之间的字符 # []里面字符之间有或的关系,可以在里面多选一
# print(ret)
# ret=re.findall('[^t]',"actx")#尖角号放在[]里面有取反的意思,[]里面有的就除开与里面相同的字符
# print(ret)



#"\ "反斜杠后面跟元字符去除特殊功能 反斜杠后面跟普通字符实现特殊功能
#\d匹配任何十进制数,它相当于[0-9]
# print(re.findall('\d(520)',"hdsjh2154542164119545201631624842556527"))
#\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','idfhd,i an li$st'))#\b寻找特殊字符
# print(re.findall(r'\bi','$idfhd, i an li$st'))#\b寻找特殊字符
# ret=re.findall(r'\bblow','blow')#pyton里面的反斜杠本来就有特殊意义,所以我们必须先用r把\转意,在把转义后的\给re赋予特殊意义
# print(ret)



# "()"#分组
# # ret=re.search('(?P<xiong>\d{3})/(?P<li>\w{3})',"hjhaadh123fuaaajkdd/kkkjj")
# "|"#有或的意义在里面



#正则表达式的方法
#findall():所有结果都返回到一个列表里面

#匹配出满足条件的第一个结果
# ret=re.search('s.b',"djkdjjksgbsgbjdjsgb")#返回匹配到的第一个对象(object),对象可以调用group()返回结果
# print(ret)
# print(ret.group())#可以用group调用对象里面的值,一般search于group要联用

#match():#只在字符串开始匹配,也只返回一个对象
# ret=re.match("asd","asbfhjkash")
# print(ret)


#split#分割
# "hdjhdsf".split("s")#字符串的split功能
# re.split('k','djksal')#分割
# ret=re.split('[j,a]','daddjksal')#分割,j把字符分成两份,啊a再对分出来的两部分进行分解
# print(ret)#['d', 'dd', 'ks', 'l']


#sub替换
# ret=re.sub("x...g","li","jdkfjdkjfkjxiongjfkljsdklj")
# print(ret)


#compile#多次匹配,相当于做函数
# re.findall('\.com',"hjfhsdjh.comhfdjhj")#z只能查找一次
# re.compile()#多次匹配,相当于做函数
# obj=re.compile('\.com')
# ret=obj.findall("hdhfjksdklfj .comdjhfji")
# print(ret)

转载于:https://www.cnblogs.com/laoli1020/p/8660774.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值