Python正则表达式100题
使用re.search()判断字符串中是否包含'hello'。 知识点:re.search()基础 返回:bool值
使用re.match()判断字符串是否以'Hello'开头。 知识点:re.match()从开头匹配 返回:bool值
使用re.findall()找出字符串中所有数字。 知识点:re.findall()返回列表 返回:匹配列表
使用re.sub()将所有数字替换为'NUM'。 知识点:re.sub()替换 返回:替换后的字符串
使用re.search()找到第一个单词。 知识点:re.search()返回Match对象 返回:匹配对象或None
从字符串中提取'word'和'123'。 知识点:分组捕获 返回:(word, 123)
查找所有形如'a1', 'b2'的组合。 知识点:多组findall返回元组列表 返回:[(a,1), (b,2)]
将'123-456-789'转换为'123.456.789'。 知识点:\1反向引用 返回:替换后字符串
找到'Python'的位置信息。 知识点:match.span() 返回:(起始位置, 结束位置)
判断字符串是否包含'hello'或'world'。 知识点:|交替 返回:bool值
判断字符串是否以数字开头。 知识点:^匹配行首 返回:bool值
判断字符串是否以.com结尾。 知识点:$匹配行尾 返回:bool值
查找独立的单词'cat'(不是category的一部分)。 知识点:\b单词边界 返回:匹配列表
验证字符串是否全是数字。 知识点:^和$限定整体 返回:bool值
判断字符串是否完全以'The'开头。 知识点:\A匹配字符串开头(与^区别:^匹配每行) 返回:bool值
找出所有以'ed'结尾的单词。 知识点:\b边界应用 返回:匹配列表
在多行字符串中找每行开头的数字。 知识点:^在多行中匹配每行开头 返回:列表
匹配完全空白或空行。 知识点:^$\n组合 返回:bool
找出夹在字母之间的数字(如a1b中的1)。 知识点:\B非单词边界 返回:列表
验证变量名是否合法(下划线开头,后跟字母数字)。 知识点:^$\b组合 返回:bool
匹配'color'或'colour'。 知识点:*表示0或多个 返回:bool
匹配至少一个连续数字。 知识点:+表示1或多个 返回:列表
匹配'https'或'httpss'(可选的额外s)。 知识点:?表示0或1 返回:bool
匹配正好6位数字。 知识点:{n}精确次数 返回:bool
匹配3到6位数字。 知识点:{n,m}范围 返回:列表
匹配至少2位的数字。 知识点:{n,}至少n次 返回:列表
找出所有引号内的内容(贪婪)。 知识点:.*贪婪匹配 返回:列表
找出所有引号内的内容(非贪婪)。 知识点:*?非贪婪 返回:列表
提取第一个HTML标签内容。 知识点:+?非贪婪 返回:第一个匹配
匹配形如'a.b'的字符串(点号可省略)。 知识点:[]和量词 返回:bool
找出所有元音字母。 知识点:[aeiou] 返回:列表
找出所有非数字字符。 知识点:[^0-9]或\D 返回:列表
提取所有数字。 知识点:\d = [0-9] 返回:列表
找出所有单词字符(字母数字下划线)。 知识点:\w = [a-zA-Z0-9_] 返回:列表
分割所有空白字符。 知识点:\s空白符 返回:列表
匹配'aXb'形式的字符串。 知识点:.匹配任意字符(除换行) 返回:bool
匹配IP地址格式(数字点号数字)。 知识点:\.转义点号 返回:bool
找出所有小写字母。 知识点:[a-z]范围 返回:列表
找出所有字母字符(大小写)。 知识点:[a-zA-Z] 返回:列表
提取所有字母数字组合。 知识点:[]和+组合 返回:列表
将日期'2024-01-15'转换为'01-15-2024'。 知识点:()分组 返回:转换后字符串
匹配重复的单词如'good good'。 知识点:\1引用第一个分组 返回:bool
提取'John Doe:30'中的姓名和年龄。 知识点:多分组 返回:(John, Doe, 30)
使用命名分组提取姓名。 知识点:(?P<name>pattern) 返回:字典
将'John Doe'转换为'Doe, John'。 知识点:(?P=name)引用命名分组 返回:字符串
提取'192.168.1.1'的每段数字。 知识点:嵌套分组 返回:分组层次
匹配'cat'或'dog'开头。 知识点:分组内交替 返回:bool
匹配'A B A'形式(如'go go')。 知识点:\2引用 返回:bool
去除所有重复的空格。 知识点:sub分组 返回:字符串
用非捕获组匹配' hello '。 知识点:(?:pattern) 返回:bool
匹配'yes'或'no'。 知识点:|交替 返回:bool
匹配'javascript'或'script'。 知识点:顺序影响匹配 返回:匹配结果
匹配'123-456'但不捕获连字符。 知识点:(?:...) 返回:span
匹配'https'或'http'开头。 知识点:(?:)组合 返回:bool
匹配'@gmail.com'或'@outlook.com'。 知识点:(|)选择 返回:bool
匹配可选的www.前缀。 知识点:(?:www\.)? 返回:bool
提取两个连续日期中的第二个。 知识点:(?:pattern){2} 返回:第二个日期
匹配包含'good'或'great'的句子。 知识点:[]与|区别 返回:bool
匹配RGB或RGBA颜色值。 知识点:(r|g|b|a)组合 返回:bool
提取颜色代码(不带#)。 知识点:?:+\d+\1 返回:列表
从'Price: $100'提取'$100'。 知识点:group()默认返回完整匹配 返回:字符串
从'abc123'提取所有分组。 知识点:groups()返回元组 返回:元组
获取'abc'在字符串中的位置。 知识点:span()返回索引 返回:(起点, 终点)
获取匹配的起始和结束索引。 知识点:start()和end() 返回:(start, end)
遍历所有数字匹配及其位置。 知识点:finditer()返回迭代器 返回:列表
找出所有连续字母并转为大写。 知识点:finditer处理 返回:列表
获取最后一个匹配的分组编号。 知识点:m.lastindex 返回:编号
获取最后一个命名分组名。 知识点:m.lastgroup 返回:名称
使用分组构建新字符串。 知识点:m.expand() 返回:字符串
统计匹配次数并替换。 知识点:len(findall) 返回:次数
匹配'Python'后面跟着数字。 知识点:(?=pattern) 返回:匹配列表
找出不以数字结尾的单词。 知识点:(?!pattern) 返回:匹配列表
找出'$'后面的数字。 知识点:(?<=pattern) 返回:匹配列表
找出不在数字后的数字(多位数中间部分)。 知识点:(?<!pattern) 返回:列表
验证密码:字母开头,包含数字。 知识点:前瞻组合 返回:bool
提取被<>包裹的内容。 知识点:(?<=X)Y(?=Z) 返回:列表
验证以'-'分隔的10位数字。 知识点:前瞻检查 返回:bool
提取数字后面的单位'm'或'cm'。 知识点:后顾 返回:列表
找出包含'@'且后面有'.com'的单词。 知识点:多层前瞻 返回:列表
提取星号之间的内容。 知识点:组合断言 返回:列表
匹配'hello'不区分大小写。 知识点:re.I / re.IGNORECASE 返回:bool
找出每行开头的'-'。 知识点:re.MULTILINE 返回:列表
用'.*'匹配多行内容。 知识点:re.DOTALL / re.S 返回:匹配对象
使用re.VERBOSE使表达式可读。 知识点:re.VERBOSE / re.X 返回:bool
预编译模式后多次使用。 知识点:re.compile() 返回:编译对象
编译带标志位的模式。 知识点:compile(flags) 返回:列表
预编译模式后访问分组。 知识点:compiled.pattern 返回:分组
忽略大小写且多行模式。 知识点:re.I | re.M 返回:列表
获取编译模式的属性。 知识点:pattern.groups, pattern.flags 返回:属性
验证原始字符串r''的正确使用。 知识点:r''原始字符串 返回:bool
验证标准邮箱格式。 知识点:综合正则 返回:bool
从文本中提取所有邮箱。 知识点:findall实战 返回:列表
提取中国手机号(1开头的11位)。 知识点:手机号正则 返回:列表
将20240115转换为2024-01-15。 知识点:sub分组替换 返回:字符串
从文本提取URL。 知识点:URL正则 返回:列表
验证18位中国身份证号。 知识点:身份证规则 返回:bool
验证IPv4地址(0-255每段)。 知识点:IP地址规则 返回:bool
提取所有HTML标签名。 知识点:标签正则 返回:列表
验证密码:8位以上,含大小写和数字。 知识点:前瞻组合 返回:bool
将信用卡号中间部分掩码为'****'。 知识点:综合应用 返回:字符串