python中提供了哪几种通过正则表达式匹配字符串的方法有哪

Python047

python中提供了哪几种通过正则表达式匹配字符串的方法有哪,第1张

python中提供了3种通过正则表达式匹配字符串的方法。种通过正则表达式匹配字符串的方法有以下三种。

1、贪婪匹配与非贪婪匹配:在定义用于匹配的模式串时,使用.*,则为贪婪匹配。使用.*,则为非贪婪匹配。

2、indall与search的选取问题:自己定义的模式串只能匹配到一个结果,使用search方法结合group方法可以直接得到这个字符串。自己定义的模式串能匹配到多个结果,则使用findall方法可以得到存储多个结果字符串的列表。

3、匹配时"()"和[]的用法:目标字符串‘abcde’[…]会匹配在[]内的任意一个字符,而不会匹配整个字符串。(…)会匹配在()内的整个字符串。使用search方法时则正常匹配(相当于没有()),使用findall方法时则只会匹配(…)的内容。)[]同时出现,考虑(…)式的字符串与[…]式内的字符和顺序,使用findall方法时结果会舍弃[…]内容,使用search方法时则正常匹配(相当于没有()和[])。

它们不匹配自己,在正则中具有其它的意义,匹配自己需要转义.

元字符的完整列表:

它们不用来代表字符,用来实现一些特殊的匹配功能

可以给 group() , start() , end() , span() 传入参数 分组的序号 ,以获取模式中特定分组匹配到的内容.默认参数为0.

组从0开始从左到右编号,它始终存在.要确定编号,只需计算从左到右的左括号字符.

(?参数)

(?a:表达式)

(?aiLmsux-imsx:表达式)

(?#注释内容)

(?P<组名>表达式) + result.group('组名') :

(?P<组名>表达式) + (?P=<组名>) :

(?:表达式)

(?=表达式)

(?!表达式)

(?<=表达式)

(?<!表达式)

(?(id/name)yes-pattern|no-pattern)

如果你匹配固定字符串或单个字符类,如果你匹配固定字符串或单个字符类,并且你没有使用任何 re 功能,例如 IGNORECASE 标志,那么正则表达式的全部功能可能不是必需的。 字符串有几种方法可以使用固定字符串执行操作,它们通常要快得多,因为实现是一个针对此目的而优化的单个小 C 循环,而不是大型、更通用的正则表达式引擎。

在转向 re 模块之前,请考虑是否可以使用更快更简单的字符串方法解决问题

正则默认是贪婪模式(匹配为尽可能 少 的文字):

非贪婪:匹配为尽可能少的文字

*? 、 +? 、 ?? 、 {m,n}?

使用正则表达式解析 HTML 或 XML 很痛苦。HTML 和 XML 有特殊情况会破坏明显的正则表达式;当你编写正则表达式处理所有可能的情况时,模式将非常复杂。 使用 HTML 或 XML 解析器模块来执行此类任务

Regular Expression, 正则表达式, 种使 表达式的 式对字符串进 匹配的语法规则。

我们抓取到的 源代码本质上就是 个超 的字符串, 想从 提取内容。 正则再合适不过了。

正则的优点: 速度快, 效率 , 准确性 正则的缺点: 新 上 难度有点 。

不过只要掌握了正则编写的逻辑关系, 写出 个提取 内容的正则其实并不复杂

正则的语法: 使 元字符进 排列组合 来匹配字符串

在线测试正则表达式网址:

https://tool.oschina.net/regex/

元字符: 具有固定含义的特殊符号 常 元字符:

量词: 控制前 的元字符出现的次数

贪婪匹配和惰性匹配

这两个要着重的说 下,因为我们写爬 的最多的就是这个惰性匹配。

先看案例

那么接下来的问题是, 正则我会写了, 怎么在python程序中使 正则呢?答案是re模块

re模块中我们只需要记住这么 个功能就 够我们使 了。

下面一个案例,是练习用正则表达式提取豆瓣电影top250的数据并保存,一起来学一下吧。