Python正则表达式入门用法(下)

Python的正则表达式模块是re。要使用它,需要先导入re模块。下面是一些常用的正则表达式操作:

  1. re.match(pattern, string): 从字符串的开始位置匹配一个模式,并返回匹配对象。如果匹配成功,则返回匹配对象;如果匹配失败,则返回None。

  2. re.search(pattern, string): 在字符串中搜索匹配模式的第一个位置,并返回匹配对象。如果匹配成功,则返回匹配对象;如果匹配失败,则返回None。

  3. re.findall(pattern, string): 在字符串中搜索匹配模式的所有位置,并返回一个列表。列表中的每个元素都是一个匹配对象。

  4. re.sub(pattern, repl, string): 将字符串中匹配模式的部分替换为指定的字符串,并返回替换后的字符串。

  5. re.split(pattern, string): 根据匹配模式分割字符串,并返回一个列表。

下面是一些常用的正则表达式元字符和修饰符:

  1. 元字符:

    • . : 匹配除换行符之外的任意字符。
    • \d : 匹配任意数字。
    • \D : 匹配任意非数字。
    • \w : 匹配任意字母、数字和下划线。
    • \W : 匹配任意非字母、数字和下划线。
    • \s : 匹配任意空白字符,包括空格、制表符、换行符等。
    • \S : 匹配任意非空白字符。
    • \b : 匹配一个单词边界,即单词和非单词之间的位置。
    • \B : 匹配一个非单词边界。
  2. 修饰符:

    • re.I : 忽略大小写匹配。
    • re.M : 多行匹配,^和$可以匹配每一行的开始和结束。
    • re.S : 单行匹配,.可以匹配换行符。

除了以上介绍的常用操作、元字符和修饰符,还有更多的正则表达式操作和特殊字符可以在Python的re模块中使用。

判断以某个内容为开始,某个内容为结束的字符串

例如:

# coding=utf-8import reinput_str = input()a = re.search(r'^lxj', input_str)if a is not None:print(a.span())
else:print(a)b = re.search(r'lxj$', input_str)if b is not None:print(b.span())
else:print(b)

在Python的正则表达式中,有几个通配符可以用来匹配不同类型的字符。

  1. "."(句点):匹配任意单个字符,除了换行符(\n)以外的任何字符。

例如,正则表达式"a.b"可以匹配"acb"、"axb"、"a6b"等。

  1. "*"(星号):匹配前面的字符零次或多次。

例如,正则表达式"ab*c"可以匹配"ac"、"abc"、"abbc"、"abbbc"等。

  1. "+"(加号):匹配前面的字符至少一次或多次。

例如,正则表达式"ab+c"可以匹配"abc"、"abbc"、"abbbc"等,但不能匹配"ac"。

  1. "?"(问号):匹配前面的字符零次或一次。

例如,正则表达式"ab?c"可以匹配"ac"、"abc",但不能匹配"abbc"。

这些通配符可以与其他正则表达式元字符和字符类一起使用,以匹配更复杂的模式。

例如:

# coding=utf-8import reinput_str = input()a = re.findall(r'.ython', input_str)print(a)
# coding=utf-8import reinput_str = input()# 编写获取she或者he的字符串,并存储到变量a中
a = re.findall(r's?he', input_str)print(a)

重复次数
在正则表达式中,我们可以使用 `{N}` 来表示一个字符组连续匹配 N 次。例如:

import rea = re.findall(r'[\d]{4}-[\d]{7}', '张三:0731-8825951,李四:0733-8794561')
print(a)

输出为:


['0731-8825951', '0733-8794561']
 

重复区间
有时候,我们不知道具体匹配字符组要重复的次数,可以使用 `{M,N}` 来表示重复的区间,其中 M 是下界,N 是上界。例如:

import rea = re.search(r'[\d]{3,4}', '0731')
b = re.search(r'[\d]{3,4}', '073')
print(a)
print(b)

执行结果输出如下:


<re.Match object; span=(0, 4), match='0731'>
<re.Match object; span=(0, 3), match='073'>
 

非贪婪模式
默认情况下,正则表达式是贪婪模式,即尽可能多地匹配字符。要使用非贪婪模式,可以在表达式后面加上 `?`。例如:

import rea = re.search(r'[\d]{3,4}?', '0731')
b = re.search(r'[\d]{3,4}?', '073')
print(a)
print(b)

执行结果输出如下:
<re.Match object; span=(0, 3), match='073'>
<re.Match object; span=(0, 3), match='073'>
 

# coding=utf-8import reinput_str = input()
# 1、基于贪心模式匹配字符串中重复出现2个数字的子字符串,并存储到变量a。a = re.findall(r'[\d]{2}', input_str)print(a)# 2、基于贪心模式匹配字符串中重复出现4-7个数字的子字符串,并存储到变量b。b = re.findall(r'[\d]{4,7}', input_str)print(b)

在正则表达式中,我们经常会遇到需要匹配一个或多个重复的字符的情况。为了简化这种常见需求,正则表达式提供了两个特殊的符号:

  * `+`:表示匹配一次或多次重复的字符。例如,`[\d]+` 可以匹配一个或多个数字字符。
  * `*`:表示匹配零次或多次重复的字符。例如,`[\d]*` 可以匹配零个或多个数字字符。

使用这两个符号来匹配字符串中的连续数字,例如:

import re# 使用 + 符号匹配至少一个数字
a = re.findall(r'\d+', '0731-8859456')
print(a)  # 输出: ['0731', '8859456']# 使用 * 符号匹配零个或多个数字
b = re.findall(r'\d*', '0731-8859456')
print(b)  # 输出: ['0731', '8859456']

在这个例子中,我们使用了 `re.findall()` 函数来查找所有匹配的数字序列。通过使用 `+` 和 `*` 符号,我们可以更简洁地表示匹配一个或多个数字的需求。

# coding=utf-8import reinput_str = input()
# 1、基于贪心模式匹配字符串中连续出现5个数字以上的子字符串,并存储到变量a。
a = re.findall(r'[\d]{5,}', input_str)print(a)# 2、匹配字符串中都为数字的子字符串,并存储到变量b。
b = re.findall(r'[\d]+[0-9]', input_str)print(b)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

分享6个自己每天都会打开的网站

分享6个自己每天都会打开的网站&#xff0c;有实用办公网站&#xff0c;也有休闲摸鱼网站&#xff0c;链接直达&#xff0c;速看~ 1、鸠摩搜索 https://www2.jiumodiary.com/ 一个免费的电子书下载网站&#xff0c;页面干净无广告&#xff0c;只有一个搜索框&#xff0c;输入…

应用了网络变压器的PC网卡连接转换器后不好连网,有掉线现象,但外接路由器无问题,可能是什么原因?

Hqst盈盛&#xff08;华强盛&#xff09;电子导读&#xff1a;今天分享的是应用了网络变压器的PC网卡连接转换器后不好连网&#xff0c;有掉线现象&#xff0c;但外接路由器无问题&#xff0c;可能是什么原因呢&#xff1f;如何解决呢&#xff1f; 首先&#xff0c;我们要了解传…

Kotlin/Android中执行网络请求

方式一&#xff1a;使用okhttp3 okhttp官网 okhttp3 github地址 打开build.gradle.kts文件加入依赖 dependencies {implementation("com.squareup.okhttp3:okhttp:4.9.0") }在IDEA的Gradle面板点击reload按钮便会自动下载jar 使用网络请求时需要把网络的权限打开&a…

Nuxt3 的生命周期和钩子函数(十一)

title: Nuxt3 的生命周期和钩子函数&#xff08;十一&#xff09; date: 2024/7/5 updated: 2024/7/5 author: cmdragon excerpt: 摘要&#xff1a;本文详细介绍了Nuxt3中几个关键的生命周期钩子和它们的使用方法&#xff0c;包括webpack:done用于Webpack编译完成后执行操作…

pytorch-时间序列

目录 1. 时间序列2. word embedding2.1 one hot2.2 word2vec2.3 GloVe 1. 时间序列 具有时间相关性的序列叫做时间序列&#xff0c;比如&#xff1a;语音、文本句子 2. word embedding 2.1 one hot 针对句子来说&#xff0c;可以用[seq_len, vector_len] 有多少个单词vecto…

2024第二届电子通信与计算机科学技术国际会议(ICECCST 2024)

2024第二届电子通信与计算机科学技术国际会议(ICECCST 2024) 会议简介 2024第二届电子通信与计算机科学技术国际会议&#xff08;ICECCST 2024&#xff09;是一次重要的学术盛会&#xff0c;将在中国厦门举行。会议的主要目的是为全球的电子通信和计算机科学技术领域的专家、…

数字信号处理实验二(模拟信号采样与重构及频谱分析FFT)

模拟信号采样与重构及频谱分析FFT&#xff08;2学时&#xff09; 要求&#xff1a; 对一模拟信号进行采样&#xff1b;对该采样信号进行重构&#xff1b;分析它们的频谱特征。目的&#xff1a; 熟悉MATLAB命令和编辑、运行、调试环境&#xff1b;掌握采样定理及对信号的频谱分析…

简过网:考教师编制报培训班有用吗?

​ 很多想要备考教师编的朋友都会有一个疑问&#xff0c;那就是备考教师编报培训班有用吗&#xff1f; 其实&#xff0c;主要还是要看你是笔试和面试。 小编觉得如果是笔试的话&#xff0c;其实都是教育理论的东西&#xff0c;线下班其实没有太大的必要&#xff0c;第一是面授…

DFS之搜索顺序——AcWing 1116. 马走日

DFS之搜索顺序 定义 DFS之搜索顺序是指在执行深度优先搜索时&#xff0c;遍历图或树中节点的策略。具体而言&#xff0c;DFS会沿着一条路径深入到底&#xff0c;当无法继续深入时回溯&#xff0c;然后选择另一条未探索的路径继续深入。搜索顺序直接影响到搜索效率和剪枝的可能…

发现CPU占用过高,该如何排查解决?

1.使用top命令 查看cpu占用最多的进程 2.使用 top -H -p pid 发现有两个线程占用比较大 3.将线程id转换为16进制 使用命令 printf 0x%x\n pid 4.使用 jstack pid | grep 线程id(16进制&#xff09; -A 20 &#xff08;显示20行&#xff09; 根据代码显示进行错误排查

电脑为什么会提示丢失msvcp140.dll?怎么修复msvcp140.dll文件会靠谱点

电脑为什么会提示丢失msvcp140.dll&#xff1f;其实只要你的msvcp140.dll文件一损坏&#xff0c;然而你的电脑程序需要运用到这个msvcp140.dll文件的时候&#xff0c;就回提示你丢失了msvcp140.dll文件&#xff01;因为没有这个文件&#xff0c;你的很多程序都用不了的。今天我…

无人机对地面运动目标定位---获取目标的移动方向和速度

目录 一、引子 我们利用单目无人机通过等时间间隔拍照的形式对地面某移动目标进行定位&#xff0c;当前&#xff0c;我们已经获得了每张相片上该目标的三维坐标&#xff0c;并且知道该无人机在飞行过程中拍照的时间间隔&#xff0c;那么我们就可以通过一定的计算&#xff0c;得…

溶酶体靶向嵌合体制备方法和技术

网盘 https://pan.baidu.com/s/1dhCCryatp71j7yXTDdrrTw?pwdynr4 具有聚集诱导发光性质的比率型溶酶体pH探针及应用.pdf 内体-溶酶体转运靶向嵌合体降解剂及其制备方法与应用.pdf 可降解PDGFR-β的蛋白降解靶向嵌合体及其制备方法和应用.pdf 溶酶体膜包覆纳米颗粒的制备方法.…

剪画小程序:自媒体工具推荐:视频文案提取!

各位小伙伴&#xff0c;你们好啊&#xff01; 上周五观看《歌手 2024》第八期时&#xff0c;我再次被何炅老师幽默风趣的主持风格所折服。他的每一句话都仿佛带着魔力&#xff0c;让现场气氛热烈非凡&#xff0c;实在令人羡慕不已&#xff01; 何炅老师的口才之所以如此出色&a…

如何在 Ubuntu上搭建 LAMP

远程登录 Ubuntu系统环境 ssh (User)(IP) # 比如&#xff1a;ssh lennlouis192.168.207.128 为安全起见&#xff0c;建议你使用 root 登录 VPS 后创建一个具有 sudo 权限的帐号。 安装和配置 Apache 2 Apache Http Server 是一个开源的&#xff0c;非常流行&#xff0c;使用…

【Unity小知识】UnityEngine.UI程序集丢失的问题

问题表现 先来说一下问题的表现&#xff0c;今天在开发的时候工程突然出现了报错&#xff0c;编辑器提示UnityEngine.UI缺少程序集引用。 问题分析与解决&#xff08;一&#xff09; 既然是程序集缺失&#xff0c;我们首先查看一下工程项目是否引用了程序集。在项目引用中查找一…

从“钓”到“管”:EasyCVR一体化视频解决方案助力水域安全管理

一、背景 随着城市化进程的加快&#xff0c;越来越多的市民热衷于钓鱼活动。钓鱼活动在带来乐趣的同时&#xff0c;也伴随着一定的安全隐患。尤其是在一些危险水域&#xff0c;也经常出现垂钓者的身影&#xff0c;非法垂钓&#xff0c;这给城市管理带来了不小的阻力。传统的人…

Java传引用问题

本文将介绍 Java 中的引用传递&#xff0c;包括其定义、实现方式、通过引用修改原来指向的内容和通过引用修改当前引用的指向的区别 目录 1、引用传递的概念 2、引用传递的实现方式 3、传引用会发生的两种情况&#xff1a; 通过引用修改当前引用的指向 通过引用修改原来指…

华为OD机试2024年最新题库 JAVA C卷+D卷

目录 专栏导读华为OD机试算法题太多了&#xff0c;知识点繁杂&#xff0c;如何刷题更有效率呢&#xff1f; 一、逻辑分析二、数据结构1、线性表① 数组② 双指针 2、map与list3、队列4、链表5、栈6、滑动窗口7、二叉树8、并查集9、矩阵 三、算法1、基础算法① 贪心思维② 二分查…

统一视频接入平台LntonCVS视频监控平台具体功能介绍

LntonCVS视频监控平台是一款基于H5技术开发的安防视频监控解决方案&#xff0c;专为全球范围内不同品牌、协议及设备类型的监控产品设计。该平台提供了统一接入管理&#xff0c;支持标准的H5播放接口&#xff0c;使其他应用平台能够快速集成视频功能。无论开发环境、操作系统或…