初级训练营 / 训练 8:Python正则表达式100题
训练 8 Python正则表达式100题.csv

Python正则表达式100题

共 100 道题  · 已完成 0
0%
完成率
1
基础搜索(re.search) 初级 100%

使用re.search()判断字符串中是否包含'hello'。 知识点:re.search()基础 返回:bool值

2
从头匹配(re.match) 初级 100%

使用re.match()判断字符串是否以'Hello'开头。 知识点:re.match()从开头匹配 返回:bool值

3
查找所有(re.findall) 初级 100%

使用re.findall()找出字符串中所有数字。 知识点:re.findall()返回列表 返回:匹配列表

4
替换(re.sub) 初级

使用re.sub()将所有数字替换为'NUM'。 知识点:re.sub()替换 返回:替换后的字符串

5
search返回匹配对象 初级

使用re.search()找到第一个单词。 知识点:re.search()返回Match对象 返回:匹配对象或None

6
search提取分组 初级

从字符串中提取'word'和'123'。 知识点:分组捕获 返回:(word, 123)

7
findall多组返回 初级

查找所有形如'a1', 'b2'的组合。 知识点:多组findall返回元组列表 返回:[(a,1), (b,2)]

8
sub反向引用 初级

将'123-456-789'转换为'123.456.789'。 知识点:\1反向引用 返回:替换后字符串

9
search位置信息 初级

找到'Python'的位置信息。 知识点:match.span() 返回:(起始位置, 结束位置)

10
多模式匹配 初级

判断字符串是否包含'hello'或'world'。 知识点:|交替 返回:bool值

11
行首锚点^ 初级

判断字符串是否以数字开头。 知识点:^匹配行首 返回:bool值

12
行尾锚点$ 初级

判断字符串是否以.com结尾。 知识点:$匹配行尾 返回:bool值

13
单词边界\b 初级

查找独立的单词'cat'(不是category的一部分)。 知识点:\b单词边界 返回:匹配列表

14
^和$组合 初级

验证字符串是否全是数字。 知识点:^和$限定整体 返回:bool值

15
\A和\Z锚点 初级

判断字符串是否完全以'The'开头。 知识点:\A匹配字符串开头(与^区别:^匹配每行) 返回:bool值

16
\b词边界细节 初级

找出所有以'ed'结尾的单词。 知识点:\b边界应用 返回:匹配列表

17
多行模式^$ 初级

在多行字符串中找每行开头的数字。 知识点:^在多行中匹配每行开头 返回:列表

18
空行匹配 初级

匹配完全空白或空行。 知识点:^$\n组合 返回:bool

19
\B反边界 初级

找出夹在字母之间的数字(如a1b中的1)。 知识点:\B非单词边界 返回:列表

20
锚点综合 初级

验证变量名是否合法(下划线开头,后跟字母数字)。 知识点:^$\b组合 返回:bool

21
零或多* 初级

匹配'color'或'colour'。 知识点:*表示0或多个 返回:bool

22
一或多+ 初级

匹配至少一个连续数字。 知识点:+表示1或多个 返回:列表

23
零或一? 初级

匹配'https'或'httpss'(可选的额外s)。 知识点:?表示0或1 返回:bool

24
精确次数{n} 初级

匹配正好6位数字。 知识点:{n}精确次数 返回:bool

25
范围次数{n,m} 初级

匹配3到6位数字。 知识点:{n,m}范围 返回:列表

26
最小次数{n,} 初级

匹配至少2位的数字。 知识点:{n,}至少n次 返回:列表

27
贪婪量词 初级

找出所有引号内的内容(贪婪)。 知识点:.*贪婪匹配 返回:列表

28
非贪婪量词*? 初级

找出所有引号内的内容(非贪婪)。 知识点:*?非贪婪 返回:列表

29
非贪婪+?和?? 初级

提取第一个HTML标签内容。 知识点:+?非贪婪 返回:第一个匹配

30
量词与字符类 初级

匹配形如'a.b'的字符串(点号可省略)。 知识点:[]和量词 返回:bool

31
简单字符类[abc] 初级

找出所有元音字母。 知识点:[aeiou] 返回:列表

32
否定字符类[^abc] 初级

找出所有非数字字符。 知识点:[^0-9]或\D 返回:列表

33
数字\d 初级

提取所有数字。 知识点:\d = [0-9] 返回:列表

34
单词字符\w 初级

找出所有单词字符(字母数字下划线)。 知识点:\w = [a-zA-Z0-9_] 返回:列表

35
空白字符\s 初级

分割所有空白字符。 知识点:\s空白符 返回:列表

36
点号.任意字符 初级

匹配'aXb'形式的字符串。 知识点:.匹配任意字符(除换行) 返回:bool

37
点号与转义 初级

匹配IP地址格式(数字点号数字)。 知识点:\.转义点号 返回:bool

38
范围[a-z] 初级

找出所有小写字母。 知识点:[a-z]范围 返回:列表

39
组合字符类 初级

找出所有字母字符(大小写)。 知识点:[a-zA-Z] 返回:列表

40
字符类综合 初级

提取所有字母数字组合。 知识点:[]和+组合 返回:列表

41
基础分组() 初级

将日期'2024-01-15'转换为'01-15-2024'。 知识点:()分组 返回:转换后字符串

42
反向引用\1 初级

匹配重复的单词如'good good'。 知识点:\1引用第一个分组 返回:bool

43
多个分组 初级

提取'John Doe:30'中的姓名和年龄。 知识点:多分组 返回:(John, Doe, 30)

44
命名分组(?P<name>) 初级

使用命名分组提取姓名。 知识点:(?P<name>pattern) 返回:字典

45
命名分组引用 初级

将'John Doe'转换为'Doe, John'。 知识点:(?P=name)引用命名分组 返回:字符串

46
嵌套分组 初级

提取'192.168.1.1'的每段数字。 知识点:嵌套分组 返回:分组层次

47
分组中的或| 初级

匹配'cat'或'dog'开头。 知识点:分组内交替 返回:bool

48
\2反向引用 初级

匹配'A B A'形式(如'go go')。 知识点:\2引用 返回:bool

49
sub中使用分组 初级

去除所有重复的空格。 知识点:sub分组 返回:字符串

50
分组不捕获?: 初级

用非捕获组匹配' hello '。 知识点:(?:pattern) 返回:bool

51
基础交替| 初级

匹配'yes'或'no'。 知识点:|交替 返回:bool

52
长者优先 初级

匹配'javascript'或'script'。 知识点:顺序影响匹配 返回:匹配结果

53
非捕获组(?:) 初级

匹配'123-456'但不捕获连字符。 知识点:(?:...) 返回:span

54
非捕获组+交替 初级

匹配'https'或'http'开头。 知识点:(?:)组合 返回:bool

55
选择性分组 初级

匹配'@gmail.com'或'@outlook.com'。 知识点:(|)选择 返回:bool

56
嵌套非捕获 初级

匹配可选的www.前缀。 知识点:(?:www\.)? 返回:bool

57
非捕获多次 初级

提取两个连续日期中的第二个。 知识点:(?:pattern){2} 返回:第二个日期

58
交替在字符类内 初级

匹配包含'good'或'great'的句子。 知识点:[]与|区别 返回:bool

59
复合交替 初级

匹配RGB或RGBA颜色值。 知识点:(r|g|b|a)组合 返回:bool

60
非捕获与分组综合 初级

提取颜色代码(不带#)。 知识点:?:+\d+\1 返回:列表

61
group()方法 初级

从'Price: $100'提取'$100'。 知识点:group()默认返回完整匹配 返回:字符串

62
groups()方法 初级

从'abc123'提取所有分组。 知识点:groups()返回元组 返回:元组

63
span()位置 初级

获取'abc'在字符串中的位置。 知识点:span()返回索引 返回:(起点, 终点)

64
start()和end() 初级

获取匹配的起始和结束索引。 知识点:start()和end() 返回:(start, end)

65
finditer()迭代 初级

遍历所有数字匹配及其位置。 知识点:finditer()返回迭代器 返回:列表

66
finditer处理 初级

找出所有连续字母并转为大写。 知识点:finditer处理 返回:列表

67
lastindex属性 初级

获取最后一个匹配的分组编号。 知识点:m.lastindex 返回:编号

68
lastgroup属性 初级

获取最后一个命名分组名。 知识点:m.lastgroup 返回:名称

69
expand()方法 初级

使用分组构建新字符串。 知识点:m.expand() 返回:字符串

70
findall与sub结合 初级

统计匹配次数并替换。 知识点:len(findall) 返回:次数

71
正向前瞻(?=) 中级

匹配'Python'后面跟着数字。 知识点:(?=pattern) 返回:匹配列表

72
负向前瞻(?!) 中级

找出不以数字结尾的单词。 知识点:(?!pattern) 返回:匹配列表

73
正向后顾(?<=) 中级

找出'$'后面的数字。 知识点:(?<=pattern) 返回:匹配列表

74
负向后顾(?<!) 中级

找出不在数字后的数字(多位数中间部分)。 知识点:(?<!pattern) 返回:列表

75
前瞻验证密码 中级

验证密码:字母开头,包含数字。 知识点:前瞻组合 返回:bool

76
前后组合 中级

提取被<>包裹的内容。 知识点:(?<=X)Y(?=Z) 返回:列表

77
前瞻电话号码 中级

验证以'-'分隔的10位数字。 知识点:前瞻检查 返回:bool

78
后顾提取单位 中级

提取数字后面的单位'm'或'cm'。 知识点:后顾 返回:列表

79
复杂前瞻 中级

找出包含'@'且后面有'.com'的单词。 知识点:多层前瞻 返回:列表

80
前后顾综合 中级

提取星号之间的内容。 知识点:组合断言 返回:列表

81
忽略大小写re.I 初级

匹配'hello'不区分大小写。 知识点:re.I / re.IGNORECASE 返回:bool

82
多行re.M 初级

找出每行开头的'-'。 知识点:re.MULTILINE 返回:列表

83
点号匹配换行re.S 初级

用'.*'匹配多行内容。 知识点:re.DOTALL / re.S 返回:匹配对象

84
详细模式re.X 初级

使用re.VERBOSE使表达式可读。 知识点:re.VERBOSE / re.X 返回:bool

85
re.compile()预编译 初级

预编译模式后多次使用。 知识点:re.compile() 返回:编译对象

86
compile+flags 初级

编译带标志位的模式。 知识点:compile(flags) 返回:列表

87
compile分组 初级

预编译模式后访问分组。 知识点:compiled.pattern 返回:分组

88
标志位组合 初级

忽略大小写且多行模式。 知识点:re.I | re.M 返回:列表

89
compile对象属性 初级

获取编译模式的属性。 知识点:pattern.groups, pattern.flags 返回:属性

90
标志位与原始字符串 初级

验证原始字符串r''的正确使用。 知识点:r''原始字符串 返回:bool

91
邮箱验证 高级

验证标准邮箱格式。 知识点:综合正则 返回:bool

92
提取邮箱 高级

从文本中提取所有邮箱。 知识点:findall实战 返回:列表

93
中国手机号 高级

提取中国手机号(1开头的11位)。 知识点:手机号正则 返回:列表

94
日期格式化 高级

将20240115转换为2024-01-15。 知识点:sub分组替换 返回:字符串

95
URL提取 高级

从文本提取URL。 知识点:URL正则 返回:列表

96
中国身份证 高级

验证18位中国身份证号。 知识点:身份证规则 返回:bool

97
IP地址验证 高级

验证IPv4地址(0-255每段)。 知识点:IP地址规则 返回:bool

98
HTML标签提取 高级

提取所有HTML标签名。 知识点:标签正则 返回:列表

99
密码强度验证 高级

验证密码:8位以上,含大小写和数字。 知识点:前瞻组合 返回:bool

100
信用卡号掩码 高级

将信用卡号中间部分掩码为'****'。 知识点:综合应用 返回:字符串