‘‘‘ 正则表达式作用:判断一个字符串是否匹配给定的格式:例如判断用户注册账号是否满足格式,抓取页面链接等。 ‘‘‘ 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:匹配任何一个单词边界 \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‘] #---------------元字符\b的使用-------------------- st = "abbc abbdr abbea" st1 = re.findall(r"\babb",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‘]
原文地址:https://www.cnblogs.com/jb9527/p/10665568.html
时间: 2024-10-29 01:11:42