烦人的正则表达式(四)

对常用的脚本语言python来说,正则表达式应该是运用非常多的,尤其是用于编写网络爬虫,使用正则表达式能大大提高效率。本人略微懂一点点python,结合学习经历和谷歌又凑了一篇文章出来。

我们需要调用python内置的re模块来使用正则,即我们需要(必须)在文本开头声明:

然后我们就可以开始调用re里面的正则函数来匹配字符串。re模式有两种方式,一种是调用re.compile函数生成pattern对象,再用pattern对象的一系列方法进行文本匹配查找。另一种方式简单粗暴,直接用re.match等方法进行匹配查找。现在我主要介绍第一种。

re.compile-- 第一种方式都要调用该函数,功能是将正则表达式转换成pattern对象。一般的表达形式:

flag为可选模式(默认为0):

然后举个例子:

分别输出 hello (match方法稍后介绍)

re.match()-- 从字符串的起始位置开始匹配,一次匹配,找到一个匹配的结果就返回,失败则返回None。返回值用group()接收打印。groups()是所有子串组成的集合,group(N)是匹配到的正则表达式第N组的子串。子串是正则表达式里被()括起来的部分,可有多个,因此可划分序号。

结果分别为abc abc false false

re.search()-- 扫描整个字符串,并返回第一个匹配成功的结果,否则返回None。整体用法与match()类似,match()匹配需要考虑开头,search()则不用,根据实际情况选择使用。

re.findall()-- 在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表。

re.finditer()-- 与re.findall()相似,返回的是迭代器。

re.split()-- 按照能够匹配的子串将文本分割并返回列表。

输出:

['a','b','c','d','e']

re.sub()-- 用于替换字符串中的匹配项。

输出:

a+b+c+d+e

自感这样写看起来很昏,改用第二种方式:

效果一样,这里是把-替换成+

正则表达式语法规则

\d ->数字

\D ->非数字

\s ->空白字符,包括空格换行符换页符等等

\S ->非空白符

\w ->单词字符

\W ->非单词字符

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181125G0N7ZF00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券