python--正则表达式,元字符,反义符,转义符,位数问题

 正则表达式(regular expression):

为什么使用正则表达式:

                在软件开发过程中,经常会涉及到大量的关键字等各种字符串的操作,使用正则表达式能很大程度的简化开发的复杂度和开发的效率,所以python中正则表达式在字符串的查询匹配中,占据很重要的地位

 'compile', 'copyreg', 'enum', 'error', 'escape', 'findall', 'finditer', 'fullmatch', 'functools', 'match', 'purge', 'search', 'split', 'sub', 'subn', 'template'

python中的re

                该模块是pyhton用来支持正则表达式模块,所以我们如需写正则表达式,必须学习该模块

 正则表达式的使用:

元字符:

        ​​​​​​​        ​​​​​​​.        ​​​​​​​        ​​​​​​​                #匹配任意符号(\n也就是换行符不匹配)

        ​​​​​​​        \w                             #匹配有效符号

        ​​​​​​​        \d                             #匹配数字

        ​​​​​​​        \s                             #匹配空白位(空格,\t, \n ,\r)

        ​​​​​​​        ^                              #以什么开头

        ​​​​​​​        $                              #以什么结尾

        ​​​​​​​        [ ]        ​​​​​​​        ​​​​​​​        ​​​​​​​     #列举中括号中的某一符号

        ​​​​​​​        [123456abc_]

        ​​​​​​​        [0123456789]

        ​​​​​​​        [0-9]

        ​​​​​​​        [a-z]

        ​​​​​​​        [0-9a-zA-Z]

 

>>> import re
>>>
>>> re.match("zhangbaoning", "zhangbaoning")
<re.Match object; span=(0, 12), match='zhangbaoning'>
>>> re.match("zhangbaoning", "zhangbaoning is good")
<re.Match object; span=(0, 12), match='zhangbaoning'>
>>> re.match(".", "zhangbaoning is good")
<re.Match object; span=(0, 1), match='z'>
>>> re.match(".", "Azhangbaoning is good")
<re.Match object; span=(0, 1), match='A'>
>>> re.match(".", "5Azhangbaoning is good")
<re.Match object; span=(0, 1), match='5'>
>>> re.match(".", "中国5Azhangbaoning is good")
<re.Match object; span=(0, 1), match='中'>
>>> re.match(".", "\r中国5Azhangbaoning is good")
<re.Match object; span=(0, 1), match='\r'>
>>> re.match(".", "\t\r中国5Azhangbaoning is good")
<re.Match object; span=(0, 1), match='\t'>
>>> re.match(".", "+\t\r中国5Azhangbaoning is good")
<re.Match object; span=(0, 1), match='+'>
>>>
>>>
>>>
>>> re.match("\w", "a")
<re.Match object; span=(0, 1), match='a'>
>>> re.match("\w", "A")

<re.Match object; span=(0, 1), match='A'>
>>> re.match("\w", "456")

<re.Match object; span=(0, 1), match='4'>
>>> re.match("\w", "_")

<re.Match object; span=(0, 1), match='_'>
>>> re.match("\w", "_456")

<re.Match object; span=(0, 1), match='_'>
>>> re.match("\w", "+_456")

>>> re.match("\w", "中+_456")

<re.Match object; span=(0, 1), match='中'>
>>>
>>>
>>>
>>> 中 = 10
>>> print(中)
10
>>> re.match("\d\d", "1assd24")

>>> #re.match("\d\d", "1assd24")   ==>match是从头匹配
>>> re.match("\d\d", "10assd24")

<re.Match object; span=(0, 2), match='10'>
>>> re.match("\s\s", "  ifyf")

<re.Match object; span=(0, 2), match='  '>
>>> re.match("\s\s", " \tifyf")

<re.Match object; span=(0, 2), match=' \t'>
>>> re.match("\s\s", " \n\tifyf")

<re.Match object; span=(0, 2), match=' \n'>
>>> re.match("\s\s", "\n\tifyf")

<re.Match object; span=(0, 2), match='\n\t'>
>>> re.match("\s\s", "\r\n\tifyf")

<re.Match object; span=(0, 2), match='\r\n'>
>>>
>>>
>>>
>>>
>>> re.match("^\d\d\w", "23a is")

<re.Match object; span=(0, 3), match='23a'>
>>> re.match("\d\d\w", "23a is")

<re.Match object; span=(0, 3), match='23a'>
>>>
>>> re.findall("\d+", "我今年16岁,是一个花季少女,我静静的等着18岁")
['16', '18']
>>> re.findall("^\d+", "我今年16岁,是一个花季少女,我静静的等着18岁")
[]
>>> re.findall("^\d+", "123456我今年16岁,是一个花季少女,我静静的等着18岁")
['123456']
>>> re.findall(".*", "123456我今年16岁,是一个花季少女,我静静的等着18岁")
['123456我今年16岁,是一个花季少女,我静静的等着18岁', '']
>>> re.findall(".*\d$", "123456我今年16岁,是一个花季少女,我静静的等着18岁")
[]
>>> re.findall(".*\d$", "123456我今年16岁,是一个花季少女,我静静的等着18")
['123456我今年16岁,是一个花季少女,我静静的等着18']
>>> re.findall("^\d.*\d$", "123456我今年16岁,是一个花季少女,我静静的等着18")

['123456我今年16岁,是一个花季少女,我静静的等着18']
>>> re.match("\d[abc].*","238sadfdgfrgrs")
>>> re.match("\d[abc].*","2sadfdgfrgrs")

>>> re.match("\d[abc].*","2caadfdgfrgrs")
<re.Match object; span=(0, 13), match='2caadfdgfrgrs'>

>>> re.match("[0123456789]", "5")
<re.Match object; span=(0, 1), match='5'>
>>> re.match("[a-z]", "d")
<re.Match object; span=(0, 1), match='d'>
>>> re.match("[0-9]", "8")
<re.Match object; span=(0, 1), match='8'>
>>> re.match("[0-9A-Za-z_]", "8")
<re.Match object; span=(0, 1), match='8'>
>>> re.match("[0-9A-Za-z_]", "_")
<re.Match object; span=(0, 1), match='_'>
>>> re.match("[0-9A-Za-z_]", "t")
<re.Match object; span=(0, 1), match='t'>
>>> re.match("[0-9A-Za-z_]", "W")
<re.Match object; span=(0, 1), match='W'>

反义符: 

                \w                        #特殊符号

                \D                        #非数字

                \S                        #非空白位

                [^]                        #非列举,和[ ]正好相反

>>> re.match("\D","A10086")
<re.Match object; span=(0, 1), match='A'>
>>> re.match("\D","a10086")
<re.Match object; span=(0, 1), match='a'>
>>> re.match("\w","a10086")
<re.Match object; span=(0, 1), match='a'>
>>> re.match("\s","a10086")
>>> re.match("\S","a10086")
<re.Match object; span=(0, 1), match='a'>

>>> re.findall("^\d.*", "ladohig")
[]
>>> re.findall("^\d.*", "1adohig")
['1adohig']
>>> re.findall("^[0-9].*", "1adohig")
['1adohig']
>>> re.findall("[^0-9].*", "1adohig")
['adohig']
>>> re.findall("[^abcd].*", "a1adohig")
['1adohig']

 

转义符: 

>>> print("\n123")

123
>>> print("\\n123")
\n123
>>> url = "d:\\a\\d\\c.txt"
>>> print(url)
d:\a\d\c.txt
>>>

>>> re.match("c:\\\\a\\\\d\\\\c.txt", url)
>>> re.match(r"c:\\a\\d\\c.txt", url)
>>> # re.match(r"c:\\a\\d\\c.txt", url) 加r,表示正则表达式

 

位数问题:

                        *                                #匹配任何位(0到多位)

                        +                               #匹配1到多位

                        ?                              #匹配0或者1位

                        {n}                             #确切的有n位

                        {m,n}                         #[m,n]区间内的任意值

                        {n,}                            # >= n

>>> #位数问题:
>>>
>>>
>>> re.findall("\d+", "我今年16岁,是一个花季少女,我静静的等着18岁")
['16', '18']
>>> re.findall("\d*", "我今年16岁,是一个花季少女,我静静的等着18岁")
['', '', '', '16', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '18', '', '']
>>> re.findall("\d*", "我今年16岁,是一个花季少女,我静静的等着18岁")
['', '', '', '16', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '18', '', '']
>>>
>>>
>>>
>>>
>>> re.findall(r"1[3456789]\d{9}", "18709319726")
['18709319726']
>>> re.findall(r"1[3456789]\d{9}", "18709319726564886165jkgukgi136986155464")
['18709319726', '13698615546']
>>>
>>> [a-zA-Z_0-9]{4,20}@openlab\.com
  File "<stdin>", line 1
    [a-zA-Z_0-9]{4,20}@openlab\.com
                               ^
SyntaxError: unexpected character after line continuation character
>>> re.match(r"[a-zA-Z_0-9]{4,20}@openlab\.com", "zhangbaoning@openlab.com")
<re.Match object; span=(0, 24), match='zhangbaoning@openlab.com'>
>>> re.match(r"[a-zA-Z_0-9]{4,20}@openlab.com", "zhangbaoning@openlabacom")
<re.Match object; span=(0, 24), match='zhangbaoning@openlabacom'>
>>>

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/530221.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

YOLOV8注意力改进方法:DilateFormer多尺度空洞 Transformer(附改进代码)

原论文地址:原论文下载地址 即插即用的多尺度全局注意力机制 本文提出了一种新颖的多尺度空洞 Transformer,简称DilateFormer,以用于视觉识别任务。原有的 ViT 模型在计算复杂性和感受野大小之间的权衡上存在矛盾。众所周知,ViT 模型使用全局注意力机制,能够在任意图像块…

理解Go语言中上下文

开发人员有时会误解context.Context类型&#xff0c;尽管它是Go语言的关键概念之一&#xff0c;也是Go中并发代码的基础之一。接下来让我们看看这个概念&#xff0c;并确保我们理解为什么乃如何有效地使用它。 根据官方文档&#xff1a; 上下文(context)携带最后期限、取消信…

Flink WordCount实践

目录 前提条件 基本准备 批处理API实现WordCount 流处理API实现WordCount 数据源是文件 数据源是socket文本流 打包 提交到集群运行 命令行提交作业 Web UI提交作业 上传代码到gitee 前提条件 Windows安装好jdk8、Maven3、IDEA Linux安装好Flink集群&#xff0c;可…

GitHub 仓库 (repository) Watch - Star - Fork - Follow

GitHub 仓库 [repository] Watch - Star - Fork - Follow References 眼睛图标旁边写着 Watch 字样。点击这个按钮就可以 Watch 该仓库&#xff0c;今后该仓库的更新信息会显示在用户的公开活动中。Star 旁边的数字表示给这个仓库添加 Star 的人数。这个数越高&#xff0c;代表…

基于ubuntu22.04系统安装nvidia A100驱动与NVLink启用

1、官方仓库 针对驱动包下载认准nvidia官网 dpkg -i nvidia-driver-local-repo-ubuntu2204-550.54.15_1.0-1_amd64.deb apt update apt search nvidia-driver-5502、安装 根据步骤1apt search nvidia-driver-550查出版本&#xff1a;此驱动包封在nvidia-driver-local-repo-ub…

大语言模型的多模态应用(多模态大语言模型的相关应用)

探索大语言模型在多模态领域的相关研究思路

【黑马头条】-day07APP端文章搜索-ES-mongoDB

文章目录 今日内容1 搭建es环境1.1 拉取es镜像1.2 创建容器1.3 配置中文分词器ik1.4 测试 2 app文章搜索2.1 需求说明2.2 思路分析2.3 创建索引和映射2.3.1 PUT请求添加映射2.3.2 其他操作 2.4 初始化索引库数据2.4.1 导入es-init2.4.2 es-init配置2.4.3 导入数据2.4.4 查询已导…

idea中MySQL数据库的配置

在IntelliJ IDEA中配置数据库可以通过以下步骤进行&#xff1a; 打开IntelliJ IDEA&#xff0c;在菜单栏中选择"View" -> "Tool Windows" -> "Database"&#xff0c;打开Database工具窗口。 在Database工具窗口上方&#xff0c;点击"…

springboot+vue2+elementui+mybatis- 批量导出导入

全部导出 批量导出 报错问题分析 经过排查&#xff0c;原因是因为在发起 axios 请求的时候&#xff0c;没有指定响应的数据类型&#xff08;这里需要指定响应的数据类型为 blob 二进制文件&#xff09; 当响应数据回来后&#xff0c;会执行 axios 后置拦截器的代码&#xff0…

相机模型浅析

相机模型 文章目录 相机模型四个坐标系针孔相机模型世界坐标系到相机坐标系相机坐标系到图像坐标系图像坐标到像素坐标 四个坐标系 ①世界坐标系&#xff1a;是客观三维世界的绝对坐标系&#xff0c;也称客观坐标系。因为数码相机安放在三维空间中&#xff0c;我们需要世界坐标…

主流排序简单集合

排序算法集合 选择排序 图解&#xff1a;以此类推直至 /*选择排序*/ void select_sort(vector<int>& nums) {/*选取一个基准元素逐个与后面的比较*/for (int i 0; i < nums.size() - 1-1; i) {int min i;/*定义随之变化的基准元素*/for (int j i 1; j <…

华为 2024 届校园招聘-硬件通⽤/单板开发——第一套(部分题目分享,完整版带答案,共十套)

华为 2024 届校园招聘-硬件通⽤/单板开发——第一套 部分题目分享&#xff0c;完整版带答案(有答案和解析&#xff0c;答案非官方&#xff0c;未仔细校正&#xff0c;仅供参考&#xff09;&#xff08;共十套&#xff09;获取&#xff08;WX:didadidadidida313&#xff0c;加我…

GEE:研究区(Polygon)样式设置

作者:CSDN @ _养乐多_ 本文将介绍在 Google Earth Engine (GEE)平台上为 polygon (面)数据设置样式的方法和代码,polygon 可以设置成任何颜色,以增加可视化效果更好理解数据分布。 结果如下图所示, 文章目录 一、统一样式1.1 示例代码1.2 示例代码链接二、根据区域名…

基于SpringBoot2.x、SpringCloud和SpringCloudAlibaba并采用前后端分离的企业级微服务多租户系统架构

简介 基于SpringBoot2.x、SpringCloud和SpringCloudAlibaba并采用前后端分离的企业级微服务多租户系统架构。并引入组件化的思想实现高内聚低耦合并且高度可配置化&#xff0c;适合学习和企业中使用。 真正实现了基于RBAC、jwt和oauth2的无状态统一权限认证的解决方案&#x…

element UI table合并单元格方法

废话不多讲&#xff0c;直接上代码&#xff0c;希望能帮到需要的朋友 // 合并单元格function spanMethod({ row, column, rowIndex, columnIndex }) {//定义需要合并的列字段&#xff0c;有哪些列需要合并&#xff0c;就自定义添加字段即可const fields [declareRegion] // …

hive-3.1.2分布式搭建与hive的三种交互方式

hive-3.1.2分布式搭建&#xff1a; 一、上传解压配置环境变量 在官网或者镜像站下载驱动包 华为云镜像站地址&#xff1a; hive&#xff1a;Index of apache-local/hive/hive-3.1.2 mysql驱动包&#xff1a;Index of mysql-local/Downloads/Connector-J # 1、解压 tar -zx…

采用Flink CDC操作SQL Server数据库获取增量变更数据

采用Flink CDC操作SQL Server数据库获取增量变更数据 Flink CDC 1.12版本引入了对SQL Server的支持&#xff0c;包括SqlServerCatalog和SqlServerTable。在SqlServerCatalog中&#xff0c;你可以根据表名获取对应的字段和字段类型。 SQL Server 2008 开始支持变更数据捕获 (C…

李廉洋:4.10黄金原油走势最新分析及策略。

美联储博斯蒂克重申了他对今年降息一次的预期&#xff0c;但他补充说&#xff0c;如果经济形势发生变化&#xff0c;他对推迟降息或进一步降息持开放态度。博斯蒂克强调了美国经济和劳动力市场的持续强劲&#xff0c;但表示就业市场的疲软迹象将促使他考虑比目前预期的更早和更…

GFS部署实验

目录 1、部署环境 ​编辑 2、更改节点名称 3、准备环境 4、磁盘分区&#xff0c;并挂载 5. 做主机映射--/etc/hosts/ 6. 复制脚本文件 7. 执行脚本完成分区 8. 安装客户端软件 1. 安装解压源包 2. 创建gfs 3. 安装 gfs 4. 开启服务 9、 添加节点到存储信任池中 1…

SVM向量支持机

1.通俗理解 svm&#xff1a;support vector machine目标&#xff1a;利用超平面将两类数据分割开来&#xff0c;这个超平面就是我们要设计的对象 如何设计&#xff1f;我们设计之后会有间隔&#xff0c;间隔越大分类效果就越好&#xff1b;距离决策边界最近的点我们成为支持向…