首页 > 代码库 > Python 正则表达式

Python 正则表达式

正则表达式

字符串是编程时涉及到的最多的一种数据结构,对字符串进行操作的需求几乎无处不在。比如判断一个字符串是否是合法的Email地址,虽然可以编程提取@前后的子串,再分别判断是否是但粗和域名,但这样做不但麻烦,而且代码难以复用。

正则表达式是一种用来匹配字符串的强有力的武器。它的设计思想是用一种描述性的语言来给字符串定义一个规则,凡是符合规则的字符串,我们就认为它"匹配"了,否则,该字符串就是不合法的。

所以我们判断一个字符串是否是合法的Email的方法是:

  1、创建一个匹配Email的正则表达式;

  2、用该正则表达式去匹配用户的输入来判断是否是合法

因为正则表达式也是用字符串来表示的,所以我们要先了解如何用字符来描述字符

特殊字符

技术分享

变长字符

技术分享

进阶

技术分享

 

re模块

由于Python的字符串本身也用\转义,所以要特别注意:s=‘asdf\\asdf’

因此我们强烈建议使用Python的r前缀,就不用考虑转义的问题了

函数 re.match(re.match尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none )

re.match(pattern, string, flags=0)

技术分享

函数 re.search 扫描整个字符串并返回第一个成功的匹配,否则返回None (re.search(pattern, string, flags=0))

函数 re.findall 以列表的形式返回全部能匹配的字串  (re.findall(pattern, string[, flags]))

提取子串 除了简单地判断是否匹配之外,正则表达式还有提取子串的强大功能。用()表示的就是要提取的分组

    ^(\d{3}-(\d{3,8}$) 分别定义了两个组,可以直接匹配子串中提取出区号和本机号

贪婪匹配

正则匹配默认是贪婪匹配,也就是匹配尽可能多的字符。

替换

Python的re模块提供了re.sub用于替换字符串中的匹配项(re.sub(pattern, repl, string, max=0))

正则表达式的修饰符

技术分享

 

Python 正则表达式