python正则表达式详解 电话号码正则表达式语法( 二 )


re.findall(pattern, string, flags=0)搜索字符串,以列表类型返回全部能匹配的子串 。
【python正则表达式详解 电话号码正则表达式语法】参数同上 。
re.split(pattern, string, maxsplit=0, flags=0)将一个字符串按照正则表达式匹配结果进行分割,返回列表类型 。

  • maxsplit:最大分割数,剩余部分作为最后一个元素输出
re.finditer(pattern, string, flags=0)搜索字符串,返回一个匹配结果的迭代类型,每个迭代元素都是Match对象 。
参数同上 。
for m in re.finditer(r'[1-9]d{5}', 'A100001 B100002'):if m:print(m.group(0))re.sub(pattern, repl, string, count=0, flags=0)在一个字符串中替换所有匹配正则表达式的子串,返回替换后的字符串 。
  • repl:替换匹配字符串的字符串
  • count:匹配的最大替换次数
sub = re.sub(r'[1-9]d{5}', ',hello', 'A100001 B100002')print(sub)Re库的等价用法上面讲解了Re库六种基本方法的函数式用法,下面介绍另一种等价的面向对象的用法:
match = re.search(r'[1-9]d{5}', 'A100001')cmp = re.compile(r'[1-9]d{5}')match = cmp.search('A100001')第一种是函数式用法,一次操作可以完成任务;第二种是面向对象用法,先将正则表达式的字符串形式编译成正则表达式对象,再进行方法操作 。两种方法都是可以的,了解即可 。
Re库的贪婪匹配机制在实际使用过程中,我们会遇上一个问题,如下:
match = re.search(r'PY.*N', 'PYANBNCN')对这样一个字符串,原则上是可以返回三个子串,即’PYAN’,’PYANBN’,’PYANBNCN’ 。但是我们调用match.group(0)查看时,该返回哪一个呢?
Re库默认采用贪婪匹配机制,返回匹配中最长的子串,也就是返回’PYANBNCN’了 。
那又有一个问题了,当我们想要输出最短的子串该怎么办呢??
我们只需在操作符后面添加?即可输出最小匹配了:
python正则表达式详解 电话号码正则表达式语法


最小匹配
match = re.search(r'PY.*?N', 'PYANBNCN')if match:print(match.group(0))小结本章讲解了Python中正则表达式Re库的入门级使用,正则表达式并不是Python所独有的,很多地方都可以使用,在学习完Re库后对其他语言和任务也都有一定的帮助 。

推荐阅读