正则表达式专项测试
考察知识点
- re模块:match、search、findall、finditer、sub、split
- 正则语法:字符类、量词、定位符、转义字符
- 分组与捕获:普通分组、命名分组、非捕获分组
- 替换操作:sub函数、替换字符串、回调替换
Python的re模块提供了正则表达式匹配功能,match()从字符串开头匹配,search()在字符串中搜索匹配,findall()返回所有匹配结果。
对字符串'Python is great',执行re.match('is', ...)的结果是:
re.______()从字符串______匹配,不匹配返回______。re.______()在字符串________搜索第一个匹配。re._______()返回______匹配结果的______。Match对象的______()方法返回匹配内容。
正则表达式中\d匹配数字,\w匹配字母数字下划线,.匹配任意字符(除换行),*匹配0次或多次,+匹配1次或多次。
正则表达式a+匹配的是:
\d匹配______,\w匹配______________,\s匹配______字符。.匹配______字符(除换行)。*匹配_________,+匹配_________,?匹配________。[]定义______,^表示______或______。
re.compile()可以预先编译正则表达式,返回Pattern对象,多次使用同一模式时编译可以提高性能。
编译后的Pattern对象可以直接使用以下哪些方法?
re._______()预编译正则表达式,返回_______对象。编译后的Pattern可以直接调用______、______、_______、______等方法。编译可以提高______,避免重复______模式。编译时可以指定______参数。
re.IGNORECASE标志使匹配忽略大小写,re.MULTILINE使^和$匹配每行的开头和结尾,re.DOTALL使.匹配包括换行符在内的所有字符。
执行re.findall(r'hello', 'Hello World hello', re.IGNORECASE)的结果是:
re.__________(或re.I)使匹配__________。re._________(或re.M)使^和$匹配______的开头结尾。re.______(或re.S)使.匹配________在内的所有字符。多个标志用______符号组合。
正则表达式中的分组使用括号()定义,可以通过group()方法获取分组内容,group(0)返回整个匹配,group(1)返回第一个分组。
执行以下代码后,groups()返回什么?
m = re.search(r'(\w+)@(\w+)\.(\w+)', 'test@example.com')
分组用______()定义,group______返回整个匹配,group______返回第一个分组。______()返回所有分组组成的______。命名分组用(?P<______>pattern)语法,通过group('______')获取。反向引用用______(数字)或(?P=name)。
贪婪量词(、+、{n,})尽可能匹配更多字符,非贪婪量词(?、+?、{n,}?)尽可能匹配更少字符,在量词后加?即可转为非贪婪模式。
执行re.findall(r'<div.*?</div>', '<div>a</div><div>b</div>')的结果是:
贪婪量词________匹配字符,如.*匹配到最后。非贪婪量词在量词后加______,如______,________匹配字符。非贪婪适合提取______的匹配,如HTML______。贪婪适合匹配______的连续内容。
re.sub(pattern, replacement, string)用于字符串替换,将匹配的内容替换为指定字符串,返回替换后的新字符串。
执行re.sub(r'\d+', 'NUM', 'a1b23c456')的结果是:
📝 发现内容有误?点击此处直接编辑
长按或扫描二维码,立即体验