Python网络爬虫与信息提取Week 3整理(1)

第一节:Re(正则表达式)库入门

正则表达式是用来简洁表达一组字符串的表达式。它可以用来表达文本类型的特征。

正则表达式编译:将符合正则表达式语法的字符串转换成正则表达式特征。

1.正则表达式的语法

例如:

P(Y|YT|YTH|YTHO)?N

正则表达式语法由字符和操作符构成。正则表达式的常用操作符见表1.1所示。

表1.1 正则表达式的常用操作符

表1.2 经典正则表达式实例

2.Re库的基本使用

(1).正则表达式的表示类型

①raw string类型(原生字符串类型)

re库采用raw string类型表示正则表达式,表示为:r’text’。例如中国境内邮政编码可以表示为:r’[1-9]\d’。

raw string(原生字符串)是不包含转移符的字符串。Re库的主要功能函数如表1.3所示。

表1.3 Re库主要功能函数

(2)功能函数的基本介绍

①re.search(pattern, string, flags=0)

在一个字符串中搜索匹配正则表达式的第一个位置,返回match对象。后面参数中,pattern是正则表达式的字符串或原生字符串表示;string是待匹配字符串,flags是使用时的控制标记。标记包括re.I(re.IGNORECASE)忽略正则表达式的大小写,[A-Z]能够匹配小鞋字符;re.M(re.MULTILINE)正则表达式中的^操作符能够将给定字符串的每行当作匹配开始;re.S(re.DOTALL)正则表达式中的.操作符能够匹配所有字符,默认匹配除换行外的所有字符。

②re.findall(pattern, string, flags=0)

例程:

结果:

['100081', '100084', '710071']

③re.split(pattern, string, maxsplit=0, flags=0)

maxsplit表示最大分个数,剩余部分作为最后一个元素输出。

代码:

结果:

['BIT ', ' TSU100084 XDU710071']

④re.finditer(pattern, string, flags=0)

代码:

结果:

100081

100084

710071

⑤re.sub(pattern,rep,string, count=0,flags=0)

rep是替换匹配字符串的字符串,count代表匹配的最大次数。

例程:

结果:

BIT xiaoao TSU100084 XDU710071

(3)Re库的另一种等价用法

例如,原来我们使用这种函数式用法,这是一种一次性操作。

现在我们可以采用面向对象用法,可以在编译后多次操作。

将正则表达式的字符串形式编译成正则表达式对象。

3.Re库的match对象

match对象的属性如表1.4所示。

表1.4 Match对象的属性

4.Re库的贪婪匹配和最小匹配

(1)贪婪匹配

Re库默认采用贪婪匹配,即输出匹配最长的子串。例如输入:

结果为:

PYANBNCNDN

(2)最小匹配

代码如下:

结果:

PYAN

最小匹配操作符如表1.5所示。

表1.5 最小匹配操作符

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

扫码关注云+社区

领取腾讯云代金券