#!/usr/bin/env python3 # coding =utf-8 ''' 正则表达式子组相关知识点 ''' import re string = "abcdefg acbdgef abcdgfe cadbgfe" # 使用()可以为一个正则表达式建立一个子组,子组可以看做内部的整体 # 子组的作用 # 1. 增加子组后对正则表达式整体的匹配内容没有影响 # 2. 子组可以改变重复元字符的重复行为 # 3. 子组在某些操作中可以对子组匹配内容单独提取 # 子组的返回 # 一个子组返回的是括号所匹配到的结果 # 多个子组返回多个括号分别匹配到的结果 先返回外括号,再返回内括号 # 子组的注意事项 # 1.每个正则表达式可以有多个子组,由外到内由左到右为第一第二....子组 # 2.子组通常不要交叉 regex = re.compile("((\w+)\s+\w+)") # ((1个或多个普通字符)1个或多个空字符1个或多个普通字符) print(regex.findall(string)) # [('abcdefg acbdgef', 'abcdefg'), ('abcdgfe cadbgfe', 'abcdgfe')] regex01 = re.compile("((\w+)\s+)") # ((1个或多个普通字符)1个或多个空字符) # 返回多个括号分别匹配到的结果 先返回外括号,再返回内括号 print(regex01.findall(string)) # 注意空字符 # [('abcdefg ', 'abcdefg'), ('acbdgef ', 'acbdgef'), ('abcdgfe ', 'abcdgfe')] regex02 = re.compile("((\w+))") # ((1个或多个普通字符)) # 返回多个括号分别匹配到的结果 先返回外括号,再返回内括号 print(regex02.findall(string)) # [('abcdefg', 'abcdefg'), ('acbdgef', 'acbdgef'), ('abcdgfe', 'abcdgfe'), ('cadbgfe', 'cadbgfe')] print("-------------------------------------------------------") regex1 = re.compile("(\w+)\s+\w+") # (1个或多个普通字符)1个或多个空字符1个或多个普通字符 print(regex1.findall(string)) # ['abcdefg', 'abcdgfe'] regex11 = re.compile("(\w+)") # (1个或多个普通字符) # 返回的是()里面的内容 print(regex11.findall(string)) # ['abcdefg', 'acbdgef', 'abcdgfe', 'cadbgfe'] regex12 = re.compile("(\w+)\s+") # (1个或多个普通字符)1个或多个空字符 # 返回的是()里面的内容 print(regex12.findall(string)) # ['abcdefg', 'acbdgef', 'abcdgfe'] print("-------------------------------------------------------") regex2 = re.compile("\w+\s+\w+") # 1个或多个普通字符1个或多个空字符1个或多个普通字符 print(regex2.findall(string)) # ['abcdefg acbdgef', 'abcdgfe cadbgfe'] regex23 = re.compile("\w+") # 1个或多个普通字符 print(regex23.findall(string)) # ['abcdefg', 'acbdgef', 'abcdgfe', 'cadbgfe'] regex24 = re.compile("\w+\s+") # 1个或多个普通字符1个或多个空字符 print(regex24.findall(string)) # ['abcdefg ', 'acbdgef ', 'abcdgfe '] # 实际上是由其并不是python特有的,这是 正则 所特有的 , # 任何一门高级语言使用正则都满足这个特点:有括号时只能匹配到括号中的内容, # 没有括号【相当于在最外层增加了一个括号】。 # 在正则里面 “()” 代表的是分组的意思,一个括号代表一个分组,你只能匹配到"()"中的内容
Python3正则表达式第三课
猜你喜欢
转载自blog.csdn.net/DaYu_LuoYouYan/article/details/80548811
今日推荐
周排行