我们读取文件内容,肯定不是单纯为了输出或者重新写入,对于文本我们一定有一些查找、定位的需求。

在Python中,还有一个专门用于文本处理的库,那就是re库。

下面我会介绍re库涉及的正则表达式的基本知识。

参考课程

1. 正则表达式

正则表达式是用来进行字符串匹配的一个字符形式。

1.1 测试工具

常见的正则表达式测试工具有:

  1. regex101
  2. 代码编辑器搜索栏的正则表达式匹配

1.2 限定符

  1. ?

    abc?表示字符c需要出现0次或者1次,或者换句话说,字符c至多出现一次。也就是说,abc?相当于abcab这两个字符串。

  2. *

    ab*c表示字符b需要出现0次或者多次,或者换句话说,字符b可以出现任意多次。也就是说,ab*c相当于acabcabbcab……bc等多个字符串。

  3. +

    ab+c表示字符b需要出现1次或者多次,或者换句话说,字符b至少出现一次。也就是说,ab+c相当于abcabbcab……bc等多个字符串。

    注意ab*cab+c的细微区别。

  4. {}

  • {num}

    ab{3}c表示字符b需要出现3次,或者换句话说,字符b只能出现2次。也就是说,ab{2}c相当于abbc这一个字符串。

  • {num1,num2}

    ab{2,5}c表示字符b需要出现2或3或4或5次,也就是说,ab{2,5}c相当于abbcabbbcabbbbcabbbbbc这四个字符串。

  • {num,}

    ab{2,}c表示字符b需要出现2次及以上,也就说,ab{2,}c相当于abbcabbbcabbbbcab……bc等无数个字符串。

1.3 字符集

在正常情况下,上述的限定符只会对其前面的一个字符起作用。如果想要某个字符串作为一个组合,可以使用字符集。

(ab)+c表示字符串ab需要出现1次或者多次,或者换句话说,字符串ab至少出现一次。也就是说,(ab)+c相当于abcababcabababcab……abc等多个字符串。

1.4 运算符

  1. |

    a(b|d)c表示字符串b出现1次或者字符串d出现1次,也就是说,a(b|d)c相当于abcadc这两个字符串。



    a(boy|girl)c也同样适用,相当于aboyc或者agirlc这两个字符。

  2. []

    []表示匹配字符能选择的范围,成为字符类,例如,[abc]+只会匹配a\b\c这三个字母出现一次或多次的字符串,而一般更经常使用的是[a-zA-Z0-9]*表示由大小写字母和数字组成的字符串,[a-zA-Z0-9_]*表示由大小写字母、数字和下划线组成的字符串。



  3. ^

    ^表示取反字符类,也就是说,[^a-zA-Z0-9]*表示除了大小写字母、数字符号以外的其他字符出现一次或多次的字符串。

  4. \

    \.表示转置,把一些有特殊意义的字符转变为实际字符

  5. \b

    \b表示字符边界

1.5 元字符

  1. \d数字字符

    1. \D非数字字符
  2. \w单词字符,包括英文字母、数字、下划线
    1. \W非单词字符
  3. \s空白字符,包括空格、制表符、换行符
    1. \S非空白字符
  4. .任意字符,不包含换行符
  5. ^匹配字符串的开头,例如^a匹配行首的a
  6. $匹配字符串的结尾,例如x$匹配行尾的x

1.6 懒惰匹配和贪婪匹配

  1. 贪婪匹配

    默认匹配尽可能多的字符。
  2. 懒惰匹配

    例子:<.+>匹配<>之间的任意字符,而<.+?>则会使用懒惰匹配

【python技巧】文本处理-re库字符匹配的更多相关文章

  1. python算法常用技巧与内置库

    python算法常用技巧与内置库 近些年随着python的越来越火,python也渐渐成为了很多程序员的喜爱.许多程序员已经开始使用python作为第一语言来刷题. 最近我在用python刷题的时候想 ...

  2. python文本 字符串开头或者结尾匹配

    python文本 字符串开头或者结尾匹配 场景: 字符串开头或者结尾匹配,一般是使用在匹配文件类型或者url 一般使用startwith或者endwith >>> a='http:/ ...

  3. 第11.5节 Python正则表达式搜索任意字符匹配及元字符“.”(点)功能介绍

    在re模块中,任意字符匹配使用"."(点)来表示, 在默认模式下,点匹配除了换行的任意字符.如果指定了搜索标记re.DOTALL ,它将匹配包括换行符的任意字符.关于搜索标记的含义 ...

  4. Python 基础之正则之一 单字符,多字符匹配及开头结尾匹配

    一.正则表达式之单个字符匹配 格式:lst = re.findall(正则表达式,要匹配的字符串)预定义字符集 匹配内容 .匹配任意字符,除了换行符\n \d匹配数字 \D匹配非数字 \w匹配字母或数 ...

  5. python爬虫之re正则表达式库

    python爬虫之re正则表达式库 正则表达式是用来简洁表达一组字符串的表达式. 编译:将符合正则表达式语法的字符串转换成正则表达式特征 操作符 说明 实例 . 表示任何单个字符 [ ] 字符集,对单 ...

  6. 26个你不知道的Python技巧

    Python是目前世界上最流行的编程语言之一.因为: 1.它容易学习 2.它用途超广 3.它有非常多的开源支持(大量的模块和库) 不好意思,优达菌又啰嗦了. 本文作者 Peter Gleeson 是一 ...

  7. 你可能不知道的 Python 技巧

    英文 | Python Tips and Trick, You Haven't Already Seen 原作 | Martin Heinz (https://martinheinz.dev) 译者 ...

  8. Python正则表达式详解——re库

    一.简介 1.1.相关链接 官方文档: Python2:https://docs.python.org/2/library/re.html Python3:https://docs.python.or ...

  9. Python菜鸟文本处理4种方法

    自从认识了python这门语言,所有的事情好像变得容易了,作为小白,逗汁儿今天就为大家总结一下python的文本处理的一些小方法. 话不多说,代码撸起来. python大小写字符互换 在进行大小写互换 ...

  10. 【常用技巧】标准模板库(STL)

    [常用技巧]标准模板库(STL) 在前几个章节中我们已经使用了诸如队列.堆.堆栈.vector 等标准模板库中的模板,切身感受到了它给我们带来的极大便利.在本节中,我们还要介绍两种标准模板——stri ...

随机推荐

  1. JavaWeb编程面试题——MyBatis

    引言 面试题==知识点,这里所记录的面试题并不针对于面试者,而是将这些面试题作为技能知识点来看待.不以刷题进大厂为目的,而是以学习为目的.这里的知识点会持续更新,目录也会随时进行调整. 关注公众号:编 ...

  2. 【Python&GIS】GDAL栅格转面&计算矢量面积

            GDAL(Geospatial Data Abstraction Library)是一个在X/MIT许可协议下的开源栅格空间数据转换库.它利用抽象数据模型来表达所支持的各种文件格式.它 ...

  3. 第一章 Rust基本知识 -- tour of rust

    第一章 基础知识 将探讨函数.变量和最基本的类型等基本知识. 变量 变量使用let关键字来声明. 在赋值时,Rust能够在99%的情况下推断变量类型.如果不能,也可以将类型添加到变量声明中. 注意 如 ...

  4. Spring框架参考手册(4.2.6版本)翻译——第三部分 核心技术 6.10.8 提供带注解的限定符元数据

    6.1.1 提供带注解的限定符元数据 在第6.9.4节"使用@Qualifier微调基于注解的自动装配"中讨论了@Qualifier注解.该部分中的示例阐释了,在解析自动装配候选者 ...

  5. 5 大数据实战-hive实战分析

    1 内部表 Show databses; Use hive_data; 1.1 创建内部表 CREATE TABLE SOGOUQ2(DT STRING,WEBSESSION STRING,WORD ...

  6. you-get的使用

    转载自: 利用Python下载:You-Get的安装及使用方法 - 宁佳兵 - 博客园   宁佳兵 所谓的光辉岁月,并不是后来闪耀的日子,而是无人问津时,对梦想的偏执. 博客园 首页 标签 GitHu ...

  7. 一文详解 Okio 输入输出流

    在 OkHttp 的源码中,我们经常能看到 Okio 的身影,这篇文章,我们把Okio拿出来进行一个详细的介绍学习. 输入输出的概念简述 Okio 简介 工程中引入 Okio API 简介及使用介绍 ...

  8. C# 12新预览功能介绍

    Visual Studio 17.7 Preview 3和.NET 8 Preview 6延续了C# 12的发展.该预览版包含的功能旨在为未来的性能增强奠定基础.对内联数组的轻松访问将允许库在更多地方 ...

  9. 2023河南省ICPC大学生程序设计竞赛-wh

    第一次出去比赛,首先感谢程老师选择我们新生更多的比赛机会,感谢! 在周六我们一起做了高铁出发取洛阳参加icpc河南省赛,不得不说洛阳师范学院确实环境很好看..在热身赛时,已经被泼了冷水,这C也太难了, ...

  10. Oracle备份与还原(实用版)

    Oracle备份与还原 EXP和IMP是客户端工具程序,它们既可以在客户端使用,也可以在服务端使用. EXPDP和IMPDP是服务端的工具程序,他们只能在ORACLE服务端使用,不能在客户端使用. I ...