41 正则中匹配多个字符串匹配任意单个字符正则中使用字符串重复、可选和特殊字符

网友投稿 265 2022-11-26

41 正则中匹配多个字符串匹配任意单个字符正则中使用字符串重复、可选和特殊字符

第三课 正则中匹配多个字符串 # 匹配多个字符串 # 择一匹配符号, | import re s = 'Python|Ruby|Java|Swift' m = re.match(s,'PythonRuby') print(m) # m = re.search(s, 'I love Python.') print(m) # m = re.search(s, 'I love Java.') print(m) # ---------------------------- 第四课 正则中匹配任意单个字符 # 匹配任意单个字符 # 点(.):可以匹配任意单个字符 ''' match('.ind','-ind') '\.ind' 'bind' ''' import re s = 'bin.' m = re.match(s, 'binxa') if m is not None: print(m.group()) # binx m = re.search(s, '') print(m.group()) # bind s1 = '3.14' s2 = '3\.14' # 这个只能匹配 3.14 m = re.match(s1, '3.14') print(m) # m = re.match(s1, '3314') print(m) # m = re.match(s2, '3.14') print(m) # m = re.match(s2, '3514') print(m) # None

第五课 正则中使用字符串 主要针对单个字符有多个选择 # [abcd] 表示 或者是a 或者是b 或者是c 或者是d # 使用字符集 # [abcd] abc|b|c|d import re m = re.match('[abcd]','a') print(m) # print(re.match('a|b|c|d','a')) # print(re.match('[abcd]','ab')) # print(re.match('ab|cd','ab')) # print(re.match('[ab][cd][ef][gh]','adfh')) # print(re.match('[ab][cd][ef][gh]','abceh')) # None ------------------------- 第六课 正则中重复、可选和特殊字符 # 重复、可选和特殊字符 ''' *:0到n a* 空字符串 a aa aaa 表示*修复的字符串 0到n次 +:1到n a+ a aa aaa 表示+修复的字符串 1到n次 至少有一个 ?:可选 a? 空字符串 a 表示修复的字符串可有可无 ''' ''' 匹配'a' 'b' 'c'三个字母按顺序从左到右排列,而且这3个字母都必须至少有1个 abc aabc abbbccc bca(不匹配) ''' import re s = 'a+b+c+' # 同时满足 三个字母按顺序并且至少有1个 strList = ['abc','aabc','bbabc','aabbbcccxyz'] for value in strList: m = re.match(s,value) if m is not None: print(m.group()) else: print('{}不匹配{}'.format(value,s)) 结果为: abc aabc bbabc不匹配a+b+c+ aabbbccc # 匹配前面任意3个数字-后面任意3个小写字母 ''' 123-abc 543-xyz 1-xyz(不匹配) xyz-123(不匹配) [0-9] 表示任意一个数字 \d 表示任意一个数字 \d\d\d 任意3个数字 [a-z] 任意一个小写字母 [a-z][a-z][a-z] 任意3个字母 [A-Z] 任意一个大写字母 {n} \d{3} 表示任意出现3此数字 [a-z]{3} 表示一个出现3此字母 ''' print('-------------') s = '\d{3}-[a-z]{3}' strList = ['123-abc','456-xyz','1234-xyz','1-xyzabc','657-xyz^%abc'] for value in strList: m = re.match(s,value) if m is not None: print(m.group()) else: print('{}不匹配{}'.format(value,s)) 结果为: 123-abc 456-xyz 1234-xyz不匹配\d{3}-[a-z]{3} 1-xyzabc不匹配\d{3}-[a-z]{3} 657-xyz ''' 匹配以a到z的26个字母中的任意一个作为前缀(也可以没有这个前缀),后面至少有1个数字 ''' print('-------') s = '[a-z]?\d+' strList = ['1234','a123','ab456','b234abc'] for value in strList: m = re.match(s,value) if m is not None: print(m.group()) else: print('{}不匹配{}'.format(value,s)) 结果为: 1234 a123 ab456不匹配[a-z]?\d+ b234 ''' 匹配email \w 表示任意一个字符,包括小写的大写的字母和数字 也能匹配汉子 不包括连字符和特殊的字符 \w+ 表示任意一个字符,包括小写的大写的字母和数字 至少有一个 不能为空 [a-zA-Z0-9] 表示:只能是字母小写大写和数字 ''' print('-------') email = '\w+@(\w+\.)*\w+\.com' emailList = ['abc@126.com','test@mail.geeori.com','test-abc@geekori.com','abc@geekori.com.cn'] for value in emailList: m = re.match(email,value) if m is not None: print(m.group()) else: print('{}不匹配{}'.format(value,email)) 结果为: abc@126.com test@mail.geeori.com test-abc@geekori.com不匹配\w+@(\w+\.)*\w+\.com abc@geekori.com strValue = '我的email是lining@geekori.com,请发邮件到这个email' m = re.search(email,strValue) print(m) # email = '[a-zA-Z0-9]+@(\w+\.)*\w+\.com' m = re.search(email,strValue) print(m) # print(m.group()) # lining@geekori.com

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:利用DriverWorks开发工具实现PXI总线数据采集卡的设计
下一篇:java中的各种修饰符作用及范围
相关文章

 发表评论

暂时没有评论,来抢沙发吧~