前言

开始正式介绍Python正则表达式re模块中的内容。R&Python Data Science系列:数据处理(9)--Python之正则表达式re模块(一)搭建好了如何介绍re模块的框架,后面内容会按照正则表达式常用的语法、正则表达式编译函数compile()、re模块中RegexObject对象常用的方法、re模块中MatchObject实例的方法4部分往框架中填充内容。

5.2 Python之正则表达式re模块

Python中正则表达式使用re模块,re模块中的方法使用正则表达式来匹配字符串。

5.2.1 正则表达式的常用语法
工欲善其事,必先利其器。如何构造正则表达式?正则表达式像其他语言一样,有自己独有的语法,掌握其用法,就可以构造需要的正则表达式。常用的正则表达式语法有:

  • 特殊字符
  • 重复量词
  • 分组与条件或特殊字符
    特殊字符为比较特殊的字符,与本身并不匹配,而表示一些特定的匹配,常用的特殊字符有:


python re匹配多次结果 python re 多行匹配_python re 匹配多行


  • 重复量词

如果想要匹配前一个字符n次,总不能把前一个字符写n次吧,正则表达式另一个强大的功能是可以指定重复的次数。


python re匹配多次结果 python re 多行匹配_python re 匹配多行_02


  • 分组与条件或

上面特殊字符以及重复量词都是只能对前一个字符匹配,如果需要将前面几个字符作为一个整体(例如匹配以ab开头的字符串)或者匹配指定无规则字符中的一个(例如匹配以字母a或者b开头的字符串)。可以使用()来做分组,括弧内的字符为一个整体,使用|表示条件或,满足分支条件中的任意一种条件时,都会成功匹配。


python re匹配多次结果 python re 多行匹配_python re匹配多次结果_03


注:以上正则表达式的语法,只列出一些常用到的语法,若没有列出的语法可以参考re--正则表达式操作文档(https://docs.python.org/zh-cn/3/library/re.html)

5.2.2 编译正则表达式

已了解正则表达式的常用语法,在Python中如何使用正则表达式呢?re模块提供了一个正则表达式引擎接口,可以将正则表达式编译成对象并用它们进行匹配。使用re.compile()将正则表达式编译成RegexObject对象,可以使用编译标志修改正则表达式的一些运行方式,如不区分大小写、多行匹配等。在re模块中标志有两种形式:全名与缩写,如DoTALL和S等价,默认情况下为re.UNICODE标志,多个标志通过|来指定,例如re.IGNORECASE|re.UNICODE。


python re匹配多次结果 python re 多行匹配_python re 匹配多行_04


import


python re匹配多次结果 python re 多行匹配_python re 匹配多行_05


import re
p = re.compile(r'Fla{1,}')
p.findall('Flaaa')


python re匹配多次结果 python re 多行匹配_python re 匹配多行_06


使用re.I标志,忽略大小写:


import re
p = re.compile(r'Fla{1,}', re.I)
p


python re匹配多次结果 python re 多行匹配_正则 如何匹配 破折号_07


import re
p = re.compile(r'Fla{1,}', re.I)
p.findall('FlAAA')


python re匹配多次结果 python re 多行匹配_python re 匹配多行_08


使用re.compile()将正则表达式编译成RegexObject,既然是对象,就有方法可以调用,RegexObject对象常用方法有match()、search()、findall()、finditer()、split()、sub()以及subn()。


python re匹配多次结果 python re 多行匹配_python re 匹配多行_09



关于作者:某互金公司从事风控方面工作,数据科学爱好者,微信公众号WorkingNotes,致力于记录自己成长轨迹,分享实践经验,欢迎交流。