美文网首页
Re库(正则表达式)熟悉

Re库(正则表达式)熟悉

作者: Wangthirteen | 来源:发表于2018-11-14 22:50 被阅读102次

正则表达式是处理字符串的强大工具,主要用于检索、查找、替换,在爬虫里主要用于解析HTML页面信息。
1.正则表达式模式

\w 匹配字母,数据及下划线
\W 匹配不是字母,数据及下划线
\s 匹配任意空白字符,等价于[\t\n\f]
\S 匹配任意非空字符
\d 匹配任意数据,等价于[0-9]
\D 匹配任意非数字字符
\A 匹配字符串开头
\Z 匹配字符串结尾,如果存在换行,只匹配到换行前结束的字符串
\z 匹配字符串结尾,如果存在换行,还会匹配换行后的字符串
\G 匹配最后匹配完成的位置
\n 匹配一个换行符
\t 匹配一个制表符
^ 匹配一行字符串的开头
? 匹配0个或1个前面的表达式定义的片段,非贪婪
$ 匹配一行字符串的结尾
. 匹配任意字符串,除了换行符
[...] 用来表示一组字符,单独列出 比如[amk] 匹配a、m、k
[^...] 不在[ ]中的字符 比如[^abc] 表示匹配除了a、b、c 之外的字符
{n} 精确匹配n个前面的表达式
{n,m} 匹配n到m次前面表达式定义的内容,贪婪方式
a|b 匹配a或b
( ) 匹配括号内的表达式,也表示组

2.常用函数

  • re.match

尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回None(简单来说就是从起始位置开始匹配,不管最后成不成功只要起始位置没有匹配成功就返回 None)
re.match(pattern, string, flags=0)
pattern 匹配的正则表达式
string 要匹配的字符串。
flags 标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等

  • re.search

re.search 扫描整个字符串并返回第一个成功的匹配(很好理解~~~)
re.search(pattern, string, flags=0)
pattern 匹配的正则表达式
string 要匹配的字符串。
flags 标志位
匹配成功re.search方法return一个匹配的对象,否则返回None。

-re.match与re.search的区别

1.re.match只匹配字符串的开始,如果字开始匹配失败,函数返回None
2.而re.search匹配整个字符串,直到匹配成功

  • re.sub

主要用于部分字符串的替换
re.sub(pattern, repl, string, count=0, flags=0)
pattern : 正则中的模式字符串。
repl : 替换的字符串,也可为一个函数,如果去电的话 可以为空。
string : 要被查找替换的原始字符串。
count : 模式匹配后替换的最大次数,默认 0 表示替换所有的匹配
content = re .sub (’\d+',”, content) 去掉content中的所有数字

  • re.compile

该将正则表达式编译成一个正则表达式对象,以便复用(就是相当于我把规则定义出来,以后想用到同样的规则,只要调用就好了)给正则表达式做了一层封装,以使我们更好地复用
compile 函数用于编译正则表达式,生成一个正则表达式( Pattern )对象,供 match() 和 search() 这两个函数使用。
re.compile(pattern[, flags])
pattern : 一个字符串形式的正则表达式
flags (修饰符): 可选,表示匹配模式

修饰符

1.re.I 忽略大小写
2.re.L 表示特殊字符集 \w, \W, \b, \B, \s, \S 依赖于当前环境
3.re.M 多行模式
4.re.S 即为 . 并且包括换行符在内的任意字符(. 不包括换行符)
5.re.U 表示特殊字符集 \w, \W, \b, \B, \d, \D, \s, \S 依赖于 Unicode 字符属性数据库
6.re.X 为了增加可读性,忽略空格和 # 后面的注释
7.网页匹配中常用的是 re.S re.I

  • re.findall

在字符串中查找正则表达式匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表,列表的里的每个元素都是元祖,可以用索引取出
findall(string[pos[, endpos]])
string : 待匹配的字符串。
pos : 可选参数,指定字符串的起始位置,默认为 0。
endpos : 可选参数,指定字符串的结束位置,默认为字符串的长度

  • re.finditer

返回一个迭代器类型,里面包含所有符合表达式的值,循环遍历输出每个值

it=re.finditer(pattern, string, flags=0)
    for match in it:
        print (match.group())
  • re.split

按照能够匹配的子串将字符串分割后,return列表类型
re.split(pattern, string[, maxsplit=0, flags=0])
re.split('\W+', 'runoob, runoob, runoob.')
['runoob', 'runoob', 'runoob', '']
另外对于一个匹配失败的子串,split不会出现分割

  • 贪婪模式
String str="abcaxc";
Patter p="ab.*c";

正则表达式一般趋向于最大长度匹配,也就是所谓的贪婪匹配,也就是匹配ab到c之间所有满足条件的字符串。abcaxc(ab.*c)

  • 非贪婪匹配
String str="abcaxc";
Patter p="ab.*c";

尽量少匹配,匹配ab到c之间满足条件的第一个子串。abc(ab.*c)

  • 如何区分贪婪模式和非贪婪模式

默认是贪婪模式;在量词后面直接加上一个问号?就是非贪婪模式
量词:{m,n}:m到n个
1.*:任意多个
2.+:一个到多个
3.?:0或一个

  • 通用匹配

将中间部分直接省略,全部用 .* 来代替或者 .?
result = re.match (’'Hello.
Demo$', content) .group()
Hello 123 4567 World This is a Regex Demo

  • 其他

1.函数.span() 返回匹配范围
2.函数.start 开始位置 .
3.函数.end 结束位置
4.函数.group() 输出匹配结果
5.函数.group(1)取出匹配的一个字符,里面加索引

详细的正则表达式手册传送门→正则表达式手册
正则表达式文档传送门→正则表达式文档

相关文章

  • Python正则表达式

    一、正则表达式常用操作符: 二、正则表达式实例: 三、Re库的介绍 1、re库是Python的标准库,主要用于字符...

  • Re库的基本使用

    Re库介绍: Re库是Python的标准库,主要用于字符串匹配。调用方式:import re 正则表达式的表示类型...

  • re 正则表达式

    re 正则表达式 re 库采用 raw string 类型表示正则表达式,表示为 r'text'(防 \ 转义) ...

  • (三)正则表达式入门学习笔记|Python网络爬虫与信息提取

    1.正则表达式的概念学习2.正则表达式的语法学习3.Re库的基本使用4.Re库的match对象5.Re库的贪婪匹配...

  • Re库的介绍

    Re库又称为正则表达式库,是Python的标准库,主要用于字符串的匹配 调用方法 Re库的基本使用 Re库使用ra...

  • Re库(正则表达式)熟悉

    正则表达式是处理字符串的强大工具,主要用于检索、查找、替换,在爬虫里主要用于解析HTML页面信息。1.正则表达式模...

  • re库的用法介绍

    re库是python的标准库 re库采用raw string类型表示正则表达式,表示为:r'test' 原生字符串...

  • Python性能优化:增大正则表达式编译缓存

    关键词:正则表达式 | 缓存 | 性能优化 Python 3 的re库中,对正则表达式的编译函数re.compil...

  • Python 正则表达式回忆录

    元字符集: [],+,*,^,|,\ 应用场景 import re #导入正则表达式库 p=re.compile(...

  • Python高级第六天

    正则表达式(模式匹配) 一、标准库模块re Python3中使用re模块支持正则表达式(Regular Expre...

网友评论

      本文标题:Re库(正则表达式)熟悉

      本文链接:https://www.haomeiwen.com/subject/fzejfqtx.html