文章目录 正则表达式分组 定义 作用 捕获组 注意事项 正则表达式分组 定义 在正则表达式中,以()建立正则表达式的内部分组,子组是正则
文章目录
- 正则表达式分组
- 定义
- 作用
- 捕获组
- 注意事项
正则表达式分组
定义
在正则表达式中,以()建立正则表达式的内部分组,子组是正则表达式的一部分,可以作为内部整体操作对象。
备注:当我们的正则表达式中存在子组时,就不能用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: '王'
注意事项
①一个正则表达式中可以包含多个子组
②子组可以嵌套,但是不要重叠或者嵌套结构复杂
③子组序列号一般从外到内,从左到右计数