第四次任务
- ?的作用
匹配零次或一次前面的分组
- 2.区分match对象的groups()、group()、group(1)……
- 完成课本的实例,匹配电话号码和邮箱。
- 正则表达式的基本模式:
import re,pyperclip 导入模块
名称+Regex=re.compile(r'(1)-(2)-(3)') 括号即代表group
较复杂的文本:名称+Regex=re.compile(r'''(
(1)
(2)
(3)
)''',自选内容)
自选内容可以是re.IGNOREC ASE(忽略大小写)、re.DOTALL (匹配任意字符)和 re.VERBOSE(忽略正则表达式字符串中的空白符和注释)单独或者组合,用管道符号|来连接,,用以简化文本
mo.=Regex.Search或findall(需要检索的文本)
细节:
对于需要检索的形式(即放在''内的内容)根据自己的需要而编写代码
文本的缩写字符分类:
/d: /D: /w: /W /s /S
也可以创建符合自己要求的字符串:[ 内容 ]。也可以使用短横表示字母或数字的范围。例如,字符分类[a-zA-Z0-9]将匹配所
有小写字母、大写字母和数字。
正则表达式符号: 格式:()+符号
sub()方法替换字符串:需要传入两个参数。第一个参数是一个字符串,用于取代发现的匹配。第二个参数是一个字符串,即正则表达式。sub()方法返回替换完成后的字符串。
可以在正则表达式的开始处使用插入符号(^),表明匹配必须发生在被查找文本开始处。类似地,可以再正则表达式的末尾加上美元符号($),表示该字符串必须以这个正则表达式的模式结束。可以同时使用^和$,表明整个字符串必须匹配该模式,也就是说,只匹配该字符串的某个子集是不够的。(r'^ $')
.(句点)字符称为“通配符”。它匹配除了换行之外的所有字符。
(.*)表示“任意文本”,(.*?)匹配最短的可能文本
匹配模式:
Greedy(贪婪的)re.compile(r'(字符串){3,6}')--匹配的是六个字符串版本
Reluctant(不情愿的)re.compile(r'(字符串){3,6}')--匹配的是三个字符串版本
Possessive(独占的):书里没有,资料找到的
Python 的正则表达式默认是“贪心”的,这表示在有二义的情况下,它们会尽可能匹配最长的字符串。花括号的“非贪心”版本匹配尽可能最短的字符串,即在结束的花括号后跟着一个问号。
search()与findall()
search()将返回一个Match对象,包含被查找字符串中的“第一次”匹配的文本,而 findall()方法将返回一组字符串,包含被查找字符串中的所有匹配。