【python之re模块学习第4天】正则表达式的应用:分组

397次阅读
没有评论
【python之re模块学习第4天】正则表达式的应用:分组

目录

  • 1 概述
  • 2 作用
  • 3 捕获组
  • 4 注意事项
  • 5 总结
  • 参考文献

1 概述

  • 定义:在正则表达式中,以()建立正则表达式的内部分组,子组是正则表达式的一部分,可作为内部整体操作的对象。
  • 操作符:()。
  • 下述例子中findall()和search()函数的用法将在后续章节中分享其具体用法。
  • 2 作用

  • 可以被作为整体操作,改变元字符的操作对象。
  • import re print(re.findall(r'(ab)+','ababcde')) #输出['ab'] print(re.search(r'(ab)+','ababcde').group()) #输出abab # 匹配姓王或姓李的名 print(re.findall(r'王|李w{1,3}','李时珍,王者荣耀')) #输出['李时珍', '王'] print(re.findall(r'(王|李)w{1,3}','李时珍,王者荣耀')) #输出['李', '王'] print(re.findall(r'((王|李)w{1,3})','李时珍,王者荣耀')) #输出[('李时珍', '李'), ('王者荣耀', '王')] print(re.search(r'(王|李)w{1,3}','李时珍,王者荣耀').group()) #输出 李时珍 print(re.search(r'(王|李)w{1,3}','王者荣耀,李时珍').group()) #输出 王者荣耀

  • 可以通过编程语言某些接口获取匹配内容中,子组对应的内容部分。如以下例子,获取url协议类型。
  • import re print(re.search(r'(https|http|ftp|file)://S+',"https://www.baidu.com")group()) #输出 https://www.baidu.com print(re.search(r'(https|http|ftp|file)://S+',"https://www.baidu.com").group(1)) #输出 https

    3 捕获组

  • 含义:可以给正则表达式的子组取一个名字,表达该子组的意义,这种有名称的子组被称为捕获组。
  • 格式:(?P<name>pattern)。
  • import re print(re.search(r'(?P<pig>ab)+','abababab').group()) #输出 abababab print(re.search(r'(?P<pig>ab)+','abababab').group('pig')) #输出 ab

    4 注意事项

  • 一个正则表达式可以包含多个子组;
  • 子组可以嵌套,但是不要重叠或者嵌套结果复杂;
  • 子组序号一般从外到内,从左到右计数。比如对于匹配模式r'((ab)c)d(ef)',子组1是abc,子组2是ab,子组3是ef。
  • 5 总结

  • 子组的运算特点类似于四则运算中的括号,改变了计算顺序;
  • 子组的匹配功能较为复杂,需要配合各个正则函数多多练习。
  • 参考文献

  • 《RE正则表达式模块(Python视频教程)》
  • 神龙|纯净稳定代理IP免费测试>>>>>>>>天启|企业级代理IP免费测试>>>>>>>>IPIPGO|全球住宅代理IP免费测试

    相关文章:

    版权声明:Python基础教程2022-11-22发表,共计1518字。
    新手QQ群:570568346,欢迎进群讨论 Python51学习