Python—re正则表达式

2023-10-30

1,首先需导入模块import re。

2,在一串字符中,findall方法可以获取全部能够匹配的片段,并把结果放在一个列表中。

书写方式:

re.findall(正则表达式(规定匹配规则),被匹配的对象)。

3,使用findall方法匹配普通字符:

 4,

一:

\d获取所有数字0-9,相当于[0-9]

\D获取所有非数字,相当于[^0-9]

二:

\w匹配所有单词字符,例如字母、数字、下划线、中文

\W匹配剩下的,空格、换行符、特殊字符等

5, 字符集用[]中括号表示,匹配任意符合条件的字符。字符集内^表示非,例如[^0-9]表示不是0-9的元素都符合。

s = 'a_1a_2, a_3多了a_4没错#'
#定义了s这个字符串

re.findall('a_[13]',s)    
#字符集中有1和3,所以可以与s中的a_1和a_3进行匹配,如果存在则输出相应的值
输出['a_1', 'a_3']

re.findall('a_[^13]',s)    
#上三角^表示非,匹配s中a_加一个字符但不包括a_1和a_3的其他所有符合条件的字符
输出['a_2', 'a_4']

re.findall('a_[1-3]',s)    #匹配a_(接下来字符在1到3之间的值都符合条件,包括1和3)
输出['a_1', 'a_2', 'a_3']

re.findall('[^a-zA-Z0-9_]',s)
#匹配除了字母数字下划线的所有字符
输出[',', ' ', '多', '了', '没', '错', '#']

re.findall('[^\w]',s)
#匹配所有不是\w包含的字符,即匹配\W
输出[',', ' ', '#']

6,

\s匹配空白字符:' '空格、\n换行符、\t制表符、\r回车符

\S匹配任意非空白字符

7,

大括号{} 中的数值用来标记要匹配字符的数量。

例:a_{3,6}表示a_后面要接3位到6位字符才符合条件

例:a_{3}表示a_后面要接3位字符才符合条件

贪婪模式:默认的,选取尽可能多的匹配字符,例如a_{3,6}尽量选取后接字符多的;

非贪婪模式:用?表示,即选取最少的匹配字符,a_{3,6}?就相当于a_{3}。

 8,

匹配特殊数量的字符的符号:

*匹配任意数量的字符

?匹配0或1个字符,这也是它可以设置非贪婪模式的原因,被设置为最多匹配一个字符的贪婪模式。

+匹配1个或多个字符

.匹配除换行符\n以外任意一个字符

提示:特殊数字符号控制的是紧挨着该符号左边的字符或字符集

s = 'hell#hello$helloo'    #定义了s这个字符串

re.findall('hello*',s)    
#从hello这个字符串的第一个字符开始匹配,*表示匹配任意个字符,所以输出的三个字符串都符合条件
输出['hell', 'hello', 'helloo']

re.findall('hello?',s)
#❓表示匹配0或1个字符,所以下面三个输出都满足条件,但helloo只输出hello
输出['hell', 'hello', 'hello']

re.findall('hello+',s)
#因为+表示匹配一个或多个字符,就是说匹配的条件是hello后面加字符可以,但不能hello少字符
输出['hello', 'helloo']

re.findall('he.','hello')    #.匹配除换行符\n以外任意一个字符
输出['hel']

re.findall('he.','he\nllo')    #.匹配除换行符\n以外任意一个字符
输出[]

9,

边界字符:

^表示在行的开始处进行匹配,例如^abc可以匹配abc000但不能匹配000abc,即匹配以abc开头的字符串;

$表示在行的末尾处开始匹配,例如abc$可以匹配000abc但不能匹配abc000,匹配以abc结尾的字符串。

s = 'anb09ui'    #创建了s这个字符串

re.findall('^anb',s)    #匹配s是否以anb开头的
['anb']

re.findall('anb$',s)    #匹配s是否以anb结尾的
[]

re.findall('ui$',s)    #匹配s是否以ui结尾的
['ui']

re.findall('^ui',s)    #匹配s是否以ui开头的
[]

10,

字符组:把任意数量的字符用小括号 () 括起来,就是字符组,目的是为匹配成功的字符串进行分组。

findall 方法会匹配第一个参数的正则表达式并过滤掉字符组外面的字符,保留小括号内的部分。

s = '你好 Python\n'    #创建了s这个字符串

re.findall('\s*(\w+)\s*',s)    #因为\w无法匹配空格,所以结果是两个字符串
['你好', 'Python']

re.findall('\s*(.+)\s*',s)
['你好 Python']

 11,

findall 方法还有第三个参数,模式参数。

两个较为常用的:re.I 忽略大小写,re.S 匹配空白字符。

多个模式参数用 | 隔开。

s = 'hello\nWorld'

re.findall('Lo',s)    #s中没有Lo
[]

re.findall('Lo',s,re.I)    #re.I表示忽略大小写,所以匹配到lo
['lo']

re.findall('Lo.',s,re.I)    #lo后面是换行符,而.不能匹配换行符
[]

re.findall('Lo.',s,re.I | re.S)    #re.S匹配任意空白字符,包括换行符
['lo\n']
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python—re正则表达式 的相关文章

  • 阻止 TensorFlow 访问 GPU? [复制]

    这个问题在这里已经有答案了 有没有一种方法可以纯粹在CPU上运行TensorFlow 我机器上的所有内存都被运行 TensorFlow 的单独进程占用 我尝试将 per process memory fraction 设置为 0 但未成功
  • 从 Django 调用 Postgres SQL 存储过程

    我正在开发一个带有 Postgresql 数据库的 Django 项目 我编写了一个可以在 Postgres 上完美运行的存储过程 现在我想从 Django 1 5 调用该存储过程 我已经编写了代码 但它提示错误 CREATE FUNCTI
  • 上传时的 Google Drive API——这些额外的空行从何而来?

    总结一下该程序 我从我的 Google 云端硬盘下载一个文件 然后在本地计算机中打开并读取一个文件 file a txt 然后在我的计算机中打开另一个文件 file b txt 处于附加模式 并且在使用这个新的 file b 更新我的 Go
  • 嵌套字典中的 Django 模板

    我正在使用 Django 模板 并且遇到了嵌套字典的一个问题 Dict result dict type 0 file name abc count 0 type 1 file name xyz count 50 我的 HTML 文件中的模
  • 检测到通过 ChromeDriver 启动的 Chrome 浏览器

    我正在尝试在 python 中使用 selenium chromedriver 来访问 www mouser co uk 网站 然而 从第一次拍摄开始 它就被检测为机器人 有人对此有解释吗 此后我使用的代码 options Options
  • 在 Pandas 中,如何从基于另一个数据框的数据框中删除行?

    我有 2 个数据框 一个名为 USERS 另一个名为 EXCLUDE 他们都有一个名为 电子邮件 的字段 基本上 我想删除 USERS 中包含 EXCLUDE 中包含电子邮件的每一行 我该怎么做 您可以使用boolean indexing
  • 如何在 Jupyter Notebook 中运行 Python 异步代码?

    我有一些 asyncio 代码在 Python 解释器 CPython 3 6 2 中运行良好 我现在想在具有 IPython 内核的 Jupyter 笔记本中运行它 我可以运行它 import asyncio asyncio get ev
  • Pyqt-如何因另一个组合框数据而更改组合框数据?

    我有一个表 有 4 列 这 4 列中的两列是关于功能的 一个是特征 另一个是子特征 在每一列中 所有单元格都有组合框 我可以在这些单元格中打开txt 我想 当我选择电影院作为功能时 我只想看到子功能组合框中的电影名称 而不是我的 数据 中的
  • Python 使用 Gstreamer 访问 USB 麦克风时遇到问题,以便在 Raspberry Pi 上使用 Pocketsphinx 执行语音识别

    所以Python的表现就好像它根本听不到我的麦克风发出的任何声音 问题就在这里 我有一个Python 2 7 假设使用的脚本Gstreamer通过以下方式访问我的麦克风并为我进行语音识别口袋狮身人面像 我在用着脉冲音频我的设备是树莓派 我的
  • 字符串中的注释和注释中的字符串

    我正在尝试使用 Python 和 Regex 计算 C 代码中包含的注释中的字符数 但没有成功 我可以先删除字符串以删除字符串中的注释 但这也会删除注释中的字符串 结果会很糟糕 是否有机会通过使用正则表达式来询问不匹配注释中的字符串 反之亦
  • 使用 NLTK 在 Python 中获取大量名词(或形容词);或 Python Mad Libs

    Like 这个问题 https stackoverflow com questions 7439555 noun adjective etc word lists or dictionaries common words 我有兴趣按词性获取
  • 小部件之间的自定义信号

    尝试将信号从一个 gtk EventBox 子级发送到另一个 在 init HeadMode 第 75 行 上出现错误 类型错误 未知信号名称 消息发送 why usr bin env python coding utf8 import p
  • Python中列表中两个连续元素的平均值

    我有一个偶数个浮点数的列表 2 34 3 45 4 56 1 23 2 34 7 89 我的任务是计算 1 和 2 个元素 3 和 4 5 和 6 等元素的平均值 在 Python 中执行此操作的快捷方法是什么 data 2 34 3 45
  • 更改 x 轴比例

    我使用 Matlab 创建了这个图 使用 matplotlib x 轴绘制大数字 例如 100000 200000 300000 我想要 1 2 3 和 10 5 之类的值来指示它实际上是 100000 200000 300000 有没有一
  • Pandas:如何将数据框插入 Clickhouse

    我正在尝试将 Pandas 数据框插入 Clickhouse 这是我的代码 import pandas import sqlalchemy as sa uri clickhouse default localhost default ch
  • 使用 NLP 进行地址分割

    我目前正在开发一个项目 该项目应识别地址的每个部分 例如来自 str Jack London 121 Corvallis ARAD ap 1603 973130 输出应如下所示 street name Jack London no 121
  • 以编程方式使用 Sphinx 特定指令解析 .rst 文件

    我希望能够在 Python 中解析基于 sphinx 的 rst 以便进一步处理和检查 就像是 import sphinx p sphinx parse path to file rst do something with p 似乎在 do
  • 附加两个具有相同列、不同顺序的数据框

    我有两个熊猫数据框 noclickDF DataFrame 0 123 321 0 1543 432 columns click id location clickDF DataFrame 1 123 421 1 1543 436 colu
  • OSX 上的 locale.getlocale() 问题

    我需要获取系统区域设置来执行许多操作 最终我想使用 gettext 翻译我的应用程序 我打算在 Linux 和 OSX 上分发它 但我在 OSX Snow Leopard 上遇到了问题 python Python 2 5 2 r252 60
  • python 中的 after() 与 update()

    我是 python 新手 开始使用 tkinter 作为画布 到目前为止 我使用 update 来更新我的画布 但还有一个 after 方法 谁能给我解释一下这个函数 请举个例子 两者之间有什么区别 root after integer c

随机推荐

  • mysql事务回滚是什么意思_Mysql事务提交及事务回滚是什么意思

    本篇文章主要给大家介绍mysql事务提交及事务回滚的相关知识 事务可以说是一段sql 语句的批处理 但是这个批处理是一个atom 原子 不可分割 要么都提交执行 要么回滚 rollback 都不执行 关于事务的详细定义介绍 我们在之前的文章
  • 6678开发板NDK网口通信完整实现(附源码)

    写在前面 1 已经有很多前辈做过很优秀的记录 本篇尽量讲得详细一点 能够让新手直接上手 2 在整个调试过程中 会遇到各种各样的问题 如果遇到问题请看第四部分 大部分问题应该能解决掉 不能解决的就评论区留言 3 我的CCS安装路径是 C Ti
  • simpleitk 读数据 图像 dicom nii 处理数据

    最近在使用 simpleITK 读取dicom nii 处理数据 非常方便 下面记录一下 1 读取DICOM序列 医学图像中一个CT序列包含很多张图片 即一个case包含许多slice 使用SimpleITK可以直接读取一个序列 impor
  • 基于微信小程序的电影院订票选座系统

    随着数据库技术和无线互联网的发展 各行业的数据信息量快速增多 正是由于这种发展形势 数据量变得非常杂乱无序 必须通过信息系统来选择用户需要的信息 本文通过微信小程序平台上研发电影院订票选座系统 解决部分电影院只能通过实体前台订票选座问题 本
  • BUCK BOOST学习总结

    首先对于我这种电源方面的小白来说 关于电源用的最多的就是线性稳压了 开关类的如 TI 的TPS系列 我是只知道应用电路而不知道具体原理的 但是长此以往也不是个办法 于是今天就带打家详细的来讲一下 BUCK BOOST电路的原理 先挂几个连接
  • JavaScript中的实例对象与函数对象、回调函数、JavaScript的error处理

    区别实例对象与函数对象 实例对象 new 函数产生的对象 称为实例对象 简称为对象函数 函数对象 将函数作为对象使用时 简称为函数对象 function Fn Fn函数 const fn new Fn Fn是构造函数 fn是实例对象 简称为
  • Windows10下TELEDYNE DALSA相机连接电脑以及网卡配置教程

    文章目录 一 相机IP地址设置 二 网卡端口设置 一 相机IP地址设置 右键相机 选择Scan Network 选择SHOW Status Dialog Box 出现发现的设备 设备显示为红色说明连接有问题 这里有两种解决办法 一种是以下文
  • QT button样式-边界宽度颜色设置

    1 QT QSS设置按钮边界样式 QT设置按钮边界样式 本学习添加三个按钮来做研究 QVBoxLayout vbox new QVBoxLayout QWidget w new QWidget this this gt setCentral
  • 安卓ShapeDrawable基本属性

    shape android shape rectangle oval line ring 可以设置为矩形 椭圆形 线性和环形 corners corners 用来定义圆角 有以下可用属性 android radius android top
  • 迷人的MCU单片机

    迷人的MCU单片机 MCU Microcontroller Unit 微控制单元 又称单片微型计算机 Single Chip Microcomputer 简称单片机 是把中央处理器 Central Process Unit CPU 的频率与
  • 智能驾驶数据集 合集

    智能驾驶数据集 集合 智能驾驶图像数据 No 1 103 300张驾驶员行为标注数据 驾驶员行为标注数据 总数据量103 300张 车内摄像头拍摄 且采集多年龄段 多时段 多种驾驶行为 关键点标注准确率不低于95 手势矩形框 人脸属性信息标
  • C++左值和右值

    这里有个误区 左值不是 left value 而是 location value 可寻址的值 右值不是 right value 而是 read value 只可读的值 所以 变量地址可读可写的是左值 只可读的是右值
  • 我的 Python.color() (Python 色彩打印控制)

    我的CSDN主页 My Python 学习个人备忘录 我的HOT博 自学并不是什么神秘的东西 一个人一辈子自学的时间总是比在学校学习的时间长 没有老师的时候总是比有老师的时候多 华罗庚 我的 Python color Python 色彩打印
  • 如何快速构造两个hashCode相同的字符串

    这要从hashCode的源码说起 String类hashCode的代码如下所示 public int hashCode int h hash if h 0 value length gt 0 char val value for int i
  • 【建议收藏】自动化测试框架开发教程

    在自动化测试项目中 为了实现更多功能 我们需要引入不同的库 框架 首先 你需要将常用的这些库 框架都装上 pip install requests pip install selenium pip install appium pip in
  • java 实现复制文件到指定目录

    将resource下的目录及文件 复制一份到指定目录 代码实现 import cn hutool core io FileUtil import org springframework core io Resource import org
  • adb shell 出现 insufficient permissions for device 参考网址:http://hi.baidu.com/iceliushuai/blog/item/1e50

    adb shell 出现 insufficient permissions for device 参考网址 http hi baidu com iceliushuai blog item 1e506160c5d01f48eaf8f801 h
  • 归纳演绎出的世界观

    题目略有写宽泛 刚读完 世界观 第一部分的内容 信息量有点大 迫切需要写篇读书笔记理清思路 归纳 和 演绎 方法 什么是归纳 Inductive 和演绎 Deductive 很多对于归纳 演绎的观点都是错误的 错误的以为两者是对立的 要么是
  • Spring MVC Controller配置方式

    Spring MVC 入门示例http cuisuqiang iteye com blog 2042931中 配置Controller时使用的是URL对应Bean的方式在SpringMVC中 对于Controller的配置方式有很多种 如下
  • Python—re正则表达式

    1 首先需导入模块import re 2 在一串字符中 findall方法可以获取全部能够匹配的片段 并把结果放在一个列表中 书写方式 re findall 正则表达式 规定匹配规则 被匹配的对象 3 使用findall方法匹配普通字符 4