python正则表达式二分组匹配

python正则表达式二分组匹配,第1张

概述匹配分组()表达整体importre#(1)分组print(re.findall('.*?_good','wusir_goodalex_goodsecret男_good'))print(re.findall('(.*?)_good','wusir_goodalex_goodsecret男_good'))#(?:)代表不优先显示分组里面的内容,只是显示正常匹配到的内容print(re.findal
匹配分组 ()表达整体import re# (1)分组print(re.findall('.*?_good','wusir_good alex_good secret男_good'))print(re.findall('(.*?)_good','wusir_good alex_good secret男_good'))# (?:) 代表不优先显示分组里面的内容,只是显示正常匹配到的内容print(re.findall('(?:.*?)_good','wusir_good alex_good secret男_good'))# (2) | 代表或 , a|b 匹配字符a 或者 匹配字符b . strvar = "abceab"lst = re.findall("a|b",strvar)print(lst)# 注意点:把不容易匹配到的内容放到前面,把容易匹配到的内容放到后面strvar = "abcdeabc234f"lst = re.findall("abcd|abc",strvar)print(lst)# (3) 练习""".  可以匹配任意的字符,除了\n\. 对.进行转义,表达.这个字符本身."""# 匹配小数 strvar = "3....  ....4  .3 ...3   1.3  9.89  10"lst = re.findall(r"\d+\.\d+",strvar)print(lst)# 匹配小数和整数 lst = re.findall(r"\d+\.\d+|\d+",strvar)print(lst)# 使用分组改造'''findall优先显示括号里的内容,需要加上?:取消哦优先显示,按照匹配到的内容显示'''lst = re.findall(r"\d+(?:\.\d+)?",strvar)print(lst)# 匹配135或171的手机号 strvar = "13566668888 17366669999 17135178392"lst = re.findall(r"(?:135|171)\d{8}",strvar)print(lst)# 优化,只能匹配出一个手机号strvar = "13566668888"lst = re.findall(r"^(?:135|171)\d{8}$",strvar)print(lst)obj = re.search(r"^(135|171)\d{8}$",strvar)print(obj)print(obj.group())print(obj.groups())# 匹配www.baIDu.com 或者 www.taobao.com"""findall : 从左到右,匹配出所有的内容,返回到列表          问题是,匹配到的字符串和分组的内容不能同时显示;search  : 从左到右,匹配到一组内容就直接返回,返回的是对象          优点是,可以让匹配到的内容和分组里的内容同时显示;          匹配不到内容时,返回的是None          obj.group() : 获取匹配到的内容obj.groups(): 获取分组里面的内容"""# findallstrvar = "www.baIDu.com  www.taobao.com  www.laowang.com"lst = re.findall(r"(?:www)\.(?:baIDu|taobao)\.(?:com)",strvar)print(lst)# searchstrvar = "www.baIDu.com  www.taobao.com  www.laowang.com"obj = re.search(r"(www)\.(baIDu|taobao)\.(com)",strvar)print(obj)# 获取匹配到的内容print(obj.group())# 获取分组里面的内容 (推荐)print(obj.groups())# 方法二,可以直接通过下标1来获取分组里面的第一个内容;print(obj.group(1))print(obj.group(2))print(obj.group(3))# search 练习 : 计算"5*6-7/3"结果  匹配 5*6 或者 7/3strvar =  "5*6-7/3"# strvar = "www.baIDu.com  www.taobao.com  www.laowang.com"obj = re.search(r"\d+[*/]\d+",strvar)res1 = obj.group()print(res1 , type(res1)) # 5*6 <class 'str'># 计算结果a,b = res1.split("*")res2 = int(a) * int(b)print(res2)# 把30替换回原来的字符串中strvar = strvar.replace(res1,str(res2))print(strvar)# 以此类推 ... 

 

总结

以上是内存溢出为你收集整理的python正则表达式二分组匹配全部内容,希望文章能够帮你解决python正则表达式二分组匹配所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1187826.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存