当前位置 : 主页 > 编程语言 > python >

python与正则表达式(part4)--正则表达式分组

来源:互联网 收集:自由互联 发布时间:2022-06-15
文章目录 ​​正则表达式分组​​ ​​定义​​ ​​作用​​ ​​捕获组​​ ​​注意事项​​ 正则表达式分组 定义 在正则表达式中,以()建立正则表达式的内部分组,子组是正则


文章目录

  • ​​正则表达式分组​​
  • ​​定义​​
  • ​​作用​​
  • ​​捕获组​​
  • ​​注意事项​​


正则表达式分组

定义

在正则表达式中,以()建立正则表达式的内部分组,子组是正则表达式的一部分,可以作为内部整体操作对象。

备注:当我们的正则表达式中存在子组时,就不能用findall(),则要用search().

作用

①可以被作为整体操作,改变元字符的操作对象

例子1(改变 +号 重复的对象)

In : re.search(r'(ab)+',"ababababab").group()
Out: 'ababababab'

备注:匹配到,就会返回被匹配的内容;匹配不到,则会报错。

例子2(改变 |号 操作对象)

In : re.search(r'(王|李)\w{1,3}',"王者荣耀").group()
Out: '王者荣耀'

备注:如果不加​​【()】​​​小括号,将匹配​​【王】​​​或​​【李\w{1, 3}】​​​.若加小括号则​​【王|李】​​​会作为一个内部整体,将匹配​​【王\w{1, 3}】​​​或​​【李\w{1, 3}】​​

②可以通过编程语言某些接口,获取匹配内容中,子组对应的内容部分

备注:子组发挥作用的前提是,整个正则表达式能够匹配到东西。

例子1

In:re.search(r'(https|http|ftp|file)://\S+',"https://www.baidu.com").group(1)
Out: 'https'

捕获组

可以给正则表达式的子组起一个名字,表达该子组的意义。这种有名称的子组即为捕获组。

格式:(?P<名字>正则表达式)

例子1

In : re.search(r'(?P<pig>ab)+',"ababababab").group('pig')
Out: 'ab'

例子2

In: re.search(r'(?P<FirstName>王|李)\w{1,3}',"王者荣耀").group("FirstName")
Out: '王'

注意事项

①一个正则表达式中可以包含多个子组
②子组可以嵌套,但是不要重叠或者嵌套结构复杂
③子组序列号一般从外到内,从左到右计数

上一篇:python与正则表达式(part6)--re模块使用
下一篇:没有了
网友评论