对常用的脚本语言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 ->非单词字符
领取专属 10元无门槛券
私享最新 技术干货