正则表达式
思维导图
正则表达式re模块 思维导图正则表达式



数量词的贪婪模式与非贪婪模式
正则表达式通常用于在文本中查找匹配的字符串。Python里数量词默认是贪婪的(在少数语言里也可能是默认非贪婪),总是尝试匹配尽可能多的字符;非贪婪的则相反,总是尝试匹配尽可能少的字符。例如:正则表达式"ab*"如果用于查找"abbbc",将找到"abbb"。而如果使用非贪婪的数量词"ab*?",将找到"a"。反斜杠的困扰
与大多数编程语言相同,正则表达式里使用"\"作为转义字符,这就可能造成反斜杠困扰。假如你需要匹配文本中的字符"\",那么使用编程语言表示的正则表达式里将需要4个反斜杠"\\\\":前两个和后两个分别用于在编程语言里转义成反斜杠,转换成两个反斜杠后再在正则表达式里转义成一个反斜杠。Python里的原生字符串很好地解决了这个问题,这个例子中的正则表达式可以使用r"\\"表示。同样,匹配一个数字的"\\d"可以写成r"\d"。有了原生字符串,你再也不用担心是不是漏写了反斜杠,写出来的表达式也更直观。匹配模式
正则表达式提供了一些可用的匹配模式,比如忽略大小写、多行匹配等,这部分内容将在Pattern类的工厂方法re.compile(pattern[, flags])中一起介绍。








输出:






















Python的re模块
re模块常量:

re模块函数:
(一)查找一个匹配项:
1.search:查找任意位置的匹配项
re.search(pattern,target):pattern是模式字符串,target作为需要匹配的字符串。 返回值为target中与pattern相匹配的子串。
2.match:必须从字符串开头匹配
与1.类似
3.fullmatch:整个字符串与正则完全匹配
与1.类似

输出:

注:查找到一个匹配项,返回的是一个re.Match对象
(二)查找多个匹配项:
1.findall:从字符串任意位置查找,返回一个列表

输出:

- finditer:从字符串任意位置查找,返回一个迭代器
迭代器是需要使用时一点一点生成出来的,内存使用更优。
(三)字符串分割函数
re.split(pattern, target, maxsplit=0, flags=0) 函数:用 pattern 分开 string , maxsplit表示最多进行分割次数, flags表示模式,flags取值即re模块中的9个常量。

输出:


在不需要正则支持且数据量和数次不多 的情况下使用str.split函数更合适,反之则使用re.split函数。
(四)字符串替换
替换主要有sub函数 与 subn函数,他们功能类似!
re.sub(pattern, repl, targetString, count=0, flags=0) 函数参数讲解:repl替换掉string中被pattern匹配的字符, count表示最大替换次数,flags表示正则表达式的常量。
repl替换内容既可以是字符串,也可以是一个函数


输出:

将所有数字全匹配成字母M
(五)编译正则对象
调用re模块的compile对象,返回一个Pattern对象,
调用Pattern对象的search方法,匹配第一个符合正则表达式的字符串。



浙公网安备 33010602011771号