赞
踩
奥奥很高心能和大家一起进步,一起学习,今天我们已经同步了官网和公众号信息,目前小程序已经发布,大家可通过这个链接进行访问:
接下来我们学习新知识,分组的使用!
一,分组
可以通过用圆括号围绕正则表达式的一部分来创建组。
这意味着一个组可以作为元字符的参数,如 * 和?。
例如:
import re
pattern = r"egg(spam)*"
if re.match(pattern, "egg"):
print("Match 1")
if re.match(pattern, "eggspamspamspamegg"):
print("Match 2")
if re.match(pattern, "spam"):
print("Match 3")
尝试一下
(spam)代表上面示例模式中的一个组。
结果:
Match 1
Match 2
02.分组--嵌套
可以使用组功能访问匹配组中的内容。
可以调用 group(0) 或者 group() 返回整个匹配。
调用 group(n) ,n 要大于 0,返回匹配的第 n 个组。
groups() 返回所有匹配的分组。
例如:
import re
pattern = r"a(bc)(de)(f(g)h)i"
match = re.match(pattern, "abcdefghijklmnop")
if match:
print(match.group())
print(match.group(0))
print(match.group(1))
print(match.group(2))
print(match.groups())
结果:
abcdefghi
abcdefghi
bc
de
('bc', 'de', 'fgh', 'g')
从上面的例子可以看出,组可以嵌套。
03.分组--有几种特殊的群组。
两个有用的命名组和非捕获组。
命名组格式为 (?P...),其中 name 是组的名称,...是内容。他们的表现与正常组完全相同,除了可以通过 group(name) 代替编号访问。
非捕获组格式为 (?:...)。它们不能通过组方法访问,所以可以将它们添加到现有的正则表达式中而不会破坏编号。
例如:
import re
pattern = r"(?Pabc)(?:def)(ghi)"
match = re.match(pattern, "abcdefghi")
if match:
print(match.group("first"))
print(match.groups())
结果:
abc
('abc', 'ghi')
04.元字符--另一个重要的元字符是 | 。
意思是与,比如 red|blue 匹配 "red"或者"blue"。
例如:
import re
pattern = r"gr(a|e)y"
match = re.match(pattern, "gray")
if match:
print ("Match 1")
match = re.match(pattern, "grey")
if match:
print ("Match 2")
match = re.match(pattern, "griy")
if match:
print ("Match 3")
结果:
Match 1
Match 2
三,作业死了都要做
01.'([^aeiou][aeiou][^aeiou])+' 匹配什么?
A. 无匹配
B. 重复的“aeiou”三的倍数
C. 一个或多个重复的非元音,元音和非元音
02. 1(23)(4(56)78)9(0) 使用 group(3) 返回什么?
A. 45678
B. 23
C. 0
D. 56
03.(a)(b(?:c)(d)(?:e)) 中 len(match.groups()) 结果为?
A. 0
B. 2
C. 3
D. 4
04.哪个正则表达式与其他的不同?
A. [1-6]
B. [12345]
C. (1|2|3|4|5)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。