浅谈正则表达式一
Posted jb9527
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了浅谈正则表达式一相关的知识,希望对你有一定的参考价值。
‘‘‘ 正则表达式作用:判断一个字符串是否匹配给定的格式:例如判断用户注册账号是否满足格式,抓取页面链接等。 ‘‘‘ import re #使用正则表达式需要导入re模块 st = "[email protected]" st1 = re.findall(r‘^[a-zA-Z0-9][email protected][a-zA-Z0-9]+.com$‘,st) #前面为匹配的规则,后面为原始字符串 print(st1) #findall方法:在字符串中找到正则表达式所匹配的所有字符串,以列表形式返回,如果没有找到,返回空列表。 st2 = "小姐姐正在吃东西,小姐姐样子好可爱。" st3 = re.findall("小姐姐",st2) print(st3) #match方法:从字符串起始位置匹配,匹配成功,返回一个匹配对象(对象中包含了匹配到的信息),匹配不成功,match()返回为空 st4 = re.match("小姐姐",st2)#注意match方法只能匹配一个 print(st4) #<re.Match object; span=(0, 3), match=‘小姐姐‘> #search方法:扫描整个字符串,匹配成功,返回一个匹配对象,只能匹配一个。 st5 = re.search("小姐姐",st2) print(st5) #sub替换方法: st6 = re.sub("小姐姐","狗狗",st2) print(st6) #狗狗正在吃东西,狗狗样子好可爱。 #-----------------------元字符------------------------------------ ‘‘‘ 什么是元字符:本身具有特殊含义的字符。 常用元字符: .:指通配符,代表任意一个字符 []:通常用来匹配一个字符集,匹配[]中列举的字符. ^:匹配以什么开始的字符串 $:匹配以什么结尾的字符串 *:匹配一个字符出现0次或者无限次 +:匹配前一个字符出现1次或者无限次 ?:匹配前一个字符出现0次或者1次,即要么有1次,要么没有 {m}:匹配前一个字符出现m次 {m,n}:匹配前一个字符出现m到n次 :反斜杠后边跟元字符去除特殊功能 反斜杠后边跟普通字符实现特殊功能 d:匹配任何十进制数,相当于类[0-9] re.findall("d","ww3361gg")也可以写为re.findall("[d]","ww3361gg") 结果为:[‘3‘,‘3‘,‘6‘,‘1‘] D:匹配任何非数字字符,相当于类[^0-9] w:匹配任何字母数字字符相当于[a-zA-Z0-9] re.findall("w","wwww.5362.ew") 结果为:[‘w‘,‘w‘,‘w‘,‘w‘,‘5‘,‘3‘,‘6‘,‘2‘,‘e‘,‘w‘] W:匹配任何非字母数字字符相当于[^a-zA-Z0-9] :匹配任何一个单词边界 B:匹配非单词边界 (ab):将括号中字符作为一个分组 ... ‘‘‘ # -----------------元字符.的使用------------------------------- st1 = "丽萨在吃汉堡" s = re.findall(r‘丽萨.‘,st1) print(s) #[‘丽萨在‘] #----------------元字符[]的使用--------------------------------- st2 = "I love you" s = re.findall(r"[love]",st2) print(s) #[‘l‘, ‘o‘, ‘v‘, ‘e‘, ‘o‘] st3 = "露西 is eating apple" s = re.findall(r"[a-z]",st3) print(s)#[‘i‘, ‘s‘, ‘e‘, ‘a‘, ‘t‘, ‘i‘, ‘n‘, ‘g‘, ‘a‘, ‘p‘, ‘p‘, ‘l‘, ‘e‘] # ------------------------元字符*的使用------------------------- st = "ac" st1 = re.findall(r"ab*c",st) print(st1) #[‘ac‘] 0次也可以匹配到 st = "abbbbc" st1 = re.findall(r"ab*c",st) print(st1) #[‘abbbbc‘] #-------------------------元字符+的使用------------------------- st = "ac" st1 = re.findall(r"ab+c",st) print(st1) #[] 0次匹配不到 st = "abbbbc" st1 = re.findall(r"ab+c",st) print(st1) #[‘abbbbc‘] # -------------------元字符?的使用----------------------------- st = "abbbbc" st1 = re.findall(r"ab?c",st) print(st1) #[] #--------------------元字符{m}的使用--------------------------- st = "abbbbc" st1 = re.findall(r"ab{3}c",st) print(st1) #[] st = "abbbbc" st1 = re.findall(r"ab{4}c",st) print(st1) #[‘abbbbc‘] #------------------元字符{m,n}的使用--------------------------- st = "abbbbc" st1 = re.findall(r"ab{1,4}c",st) print(st1) #[‘abbbbc‘] st = "abbbbc" st1 = re.findall(r"ab{1,5}c",st) print(st1) #[‘abbbbc‘] st = "abbbbc" st1 = re.findall(r"ab{,6}c",st) print(st1) #[‘abbbbc‘] st = "abbbbc" st1 = re.findall(r"ab{4,}c",st) #最少四次到无限次 print(st1) #[‘abbbbc‘] #----------------元字符^的使用-------------------- st = "abbc abbdr abbea" st1 = re.findall(r"^abb",st) print(st1)#[‘abb‘] #-----------------元字符$的使用-------------------- st = "abbc abbdr abbea" st1 = re.findall(r"ea$",st) print(st1)#[‘ea‘] #---------------元字符的使用-------------------- st = "abbc abbdr abbea" st1 = re.findall(r"abb",st) print(st1)#[‘abb‘, ‘abb‘, ‘abb‘] #----------------元字符B的使用------------------- st = "abbc abbdr abbea" st1 = re.findall(r"Bbb",st) print(st1)#[‘bb‘, ‘bb‘, ‘bb‘] #----------------元字符的用法------------------- st = "小姐姐正在吃东西,小姐姐好可爱,小姐姐吃饱了" st1 = re.findall(r"小姐姐?",st) #之前?代表匹配前一个字符出现0次或者1次,即要么有1次,要么没有,加了r防转义。 print(st1) #会把满足要求的都获取到[‘小姐姐‘, ‘小姐姐‘, ‘小姐姐‘] #--------------------贪婪与非贪婪匹配------------- st = "aaabbbbaaaabbbaaaaaabbb" st1 = re.findall(r"a{2,4}",st) #正常模式-贪婪匹配 print(st1) #[‘aaa‘, ‘aaaa‘, ‘aaaa‘, ‘aa‘] st = "aaabbbbaaaabbbaaaaaabbb" st1 = re.findall(r"a{2,4}?",st) #非贪婪匹配,匹配最短的aa。 print(st1) #[‘aa‘, ‘aa‘, ‘aa‘, ‘aa‘, ‘aa‘, ‘aa‘]
以上是关于浅谈正则表达式一的主要内容,如果未能解决你的问题,请参考以下文章