首页 > 编程语言 >【python技巧】文本处理-re库字符匹配

【python技巧】文本处理-re库字符匹配

时间:2023-09-19 23:33:17浏览次数:46  
标签:字符 ab 匹配 或者 python 文本处理 re abc 字符串

(【python技巧】文本处理-re库字符匹配)

我们读取文件内容,肯定不是单纯为了输出或者重新写入,对于文本我们一定有一些查找、定位的需求。 在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这两个字符。 在这里插入图片描述

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

  2. ^ ^表示取反字符类,也就是说,[^a-zA-Z0-9]*表示除了大小写字母、数字符号以外的其他字符出现一次或多次的字符串。 在这里插入图片描述

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

  4. \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. 懒惰匹配 例子:<.+>匹配<>之间的任意字符,而<.+?>则会使用懒惰匹配

标签:字符,ab,匹配,或者,python,文本处理,re,abc,字符串
From: https://blog.51cto.com/u_15965807/7530295

相关文章

  • 【python技巧】文本处理-re库字符匹配
    目录1.正则表达式1.1测试工具1.2限定符1.3字符集1.4运算符1.5元字符1.6懒惰匹配和贪婪匹配我们读取文件内容,肯定不是单纯为了输出或者重新写入,对于文本我们一定有一些查找、定位的需求。在Python中,还有一个专门用于文本处理的库,那就是re库。下面我会介绍re库涉及的正则......
  • SpringMVC - 1( 了解 + postman 工具 + 请求与响应 + Rest 风格 )
    SpringMVC目录SpringMVCSpringMVC概述SpringMVC入门案例案例制作工作流程解析启动服务器初始化过程单次请求过程bean加载控制问题分析思路分析环境准备bean加载控制PostMan工具的使用PostMan简介PostMan安装保存当前请求请求与响应设置请求映射路径环境准备问题分析设置映......
  • Python 爬虫使用 Selenium 如何在 WebElement 获得属性
    首先,我们需要初始化驱动和指定使用特定的流量器。 代码如下: fromseleniumimportwebdriverwd=webdriver.Firefox()上面的代码可以简单的理解为启动一个Firefox的实例。使用css选择器可以把程序读取的HTML理解为一个Doc。我们需要在Doc中选择我们的元素,这个叫做选择......
  • Python 如何把 String 转换为 Json 对象
    在我们对JSON进行处理的时候,大概率我们会需要把字符串转换为JSON对象后才能进行处理。Python贴心的使用json.loads(employee_string)就可以了。首先需要做的就是导入JSON库。#includejsonlibraryimportjson对现代程序员来说,JSON数据结构基本上是非常常见的数据结构了,几......
  • Python-day12
    复习:1、python异常处理机制try:a=int(input('a='))b=int(input('b='))c=a/bprint(c)exceptZeroDivisionError:print('除数不能为0')exceptValueError:print('输入应该为整数')finally:print('计算结束')tr......
  • Vue之与后端交互的三种方式、显示小电影案例、计算属性、监听属性、Vue生命周期、组件
    与后端交互的三种方式后端写了一堆接口前段会了前后端要打通===》从前端发送ajax===》核心:用js发送http请求,接收返回原生js,可以开启可以开启ajax,但是原生js开启,比较麻烦,需要做浏览器兼容,有坑(基本不写)jq,写了个兼容所有浏览器的$.ajax(),不仅仅有ajax,还封装了很多d......
  • Python 如何把 String 转换为 Json 对象
    在我们对JSON进行处理的时候,大概率我们会需要把字符串转换为JSON对象后才能进行处理。Python贴心的使用json.loads(employee_string)就可以了。首先需要做的就是导入JSON库。#includejsonlibraryimportjson对现代程序员来说,JSON数据结构基本上是非常常见的数据......
  • 在python中使用cmd命令行
    在python中使用命令行环境:windows10python版本:3.7importoslists=os.popen('adbdevices').read()ip_info=os.popen('ipconfig').read()#一行一行读取ip_infos=os.popen('ipconfig').readlines()#所有都读取存放在一个列表中ping=os.popen('pin......
  • Python 爬虫使用 Selenium 如何在 WebElement 获得属性
    首先,我们需要初始化驱动和指定使用特定的流量器。 代码如下: fromseleniumimportwebdriverwd=webdriver.Firefox()上面的代码可以简单的理解为启动一个Firefox的实例。使用css选择器可以把程序读取的HTML理解为一个Doc。我们需要在Doc中选择我们的元素,......
  • 【C#】【Equals和ReferenceEquals】关于对象和值的问题
    在学习C#中的记录类型时,对出现的Equals和ReferenceEquals得到的不同结果表示不理解,随即进行相关资料查找。 值类型==:比较两者的“内容”是否相同,即“值”是否一样Equals:比较两者的“内容”是否相同,即“值”是否一样ReferenceEquals:返回false,因为会对值类型进行装箱再进行......