import re

article/2025/9/18 18:18:42

元字符

这里写图片描述

px* 可以匹配 p px px...
px+ 可以匹配 px px... 但是不能匹配到p默认的匹配都是贪婪匹配
贪婪匹配就是一次匹配尽可能多的内容比如正则是 'aoe+'  要匹配的字符串是 'aoeeeeee'  它可以匹配到aoeeeeee
但是如果正则是 'aoe+?' 的话 它只能匹配到'aoe'
?放在+ * {n,m}是取消贪婪匹配的 同时?也是匹配01次\ 是转义符
可以让有特殊意义的元字符失效  比如\. 只是用来匹配. 而不是除换行之外的任意单个字符
可以让普通字符具有特殊意义    比如\d 不是用来匹配字母d,而是用来匹配单个数字0-9  等价于[0-9]^a.*b$ 同时满足以a开头以b结尾

这里写图片描述

[] 正则中学名叫 字符集
[abc] 匹配abc 中的其中一个
[a-c] -用于表示范围 效果和上面的相同  顺序是按照ascii码排的
[^abc] 匹配除abc之外的任意一个字符

一些应用

这里写图片描述

这里写图片描述

这里写图片描述
?P<f>\b\w+\b 是说给 \b\w+\b 这段正则命名为f
匹配AA这种形式的(?P<f>\b\w+\b)(?P=f)

关于分组

首先是分组的扩展语法
这里写图片描述

正则中()是用来分组的

一般用match和search这两个方法匹配关于分组的正则
match和search方法匹配成功后会返回match对象

print(re.search("(\d{3})(\w+)(\d{3})","123abcd123"))
# <_sre.SRE_Match object; span=(0, 10), match='123abcd123'>

match对象的主要方法

groups() 将匹配到的内容分组 放到元组中 然后返回这个元组

print(re.search("(\d{3})(\w+)(\d{3})","123abcd123").groups())
('123', 'abcd', '123')

group() 返回内容

print(re.search("(\d{3})(\w+)(\d{3})","123abcd123").group(0))
print(re.search("(\d{3})(\w+)(\d{3})","123abcd123").group())
# 返回大正则匹配到的内容print(re.search("(\d{3})(\w+)(\d{3})","123abcd123").group(1))   # 第一组
print(re.search("(\d{3})(\w+)(\d{3})","123abcd123").group(2))   # 第二组
print(re.search("(\d{3})(\w+)(\d{3})","123abcd123").group(3))   # 第三组# 如果这里将分组命名的话 
print(re.search("(?P<abc>\d{3})(?P<zzz>\w+)(?P=abc)","123abcd123").group("abc"))    # 123
print(re.search("(?P<abc>\d{3})(?P<zzz>\w+)(?P=abc)","123abcd123").group("zzz"))    # abcd# 前面(?P<abc>\d{3}) 就是将该分组命名为abc 
# 后面如果要匹配相同的内容的话 可以额(?P=abc)
# group()可以通过传入组名来获取匹配到的内容print(re.search("(?P<abc>\d{3})(?P<zzz>\w+)(?P=abc)","123abcd123").group('abc',"zzz"))
# ('123', 'abcd')
# 传入多个组号或组名 可以返回多个元素组成的元素

groupdict() 组名为key 匹配到的内容为value

print(re.search("(?P<abc>\d{3})(?P<zzz>\w+)(?P=abc)","123abcd123").groupdict())
# {'abc': '123', 'zzz': 'abcd'}

start() 返回指定分组的起始索引位置

print(re.search("(?P<abc>\d{3})(?P<zzz>\w+)(?P=abc)","123abcd123").start(1))
print(re.search("(?P<abc>\d{3})(?P<zzz>\w+)(?P=abc)","123abcd123").start(2))
print(re.search("(?P<abc>\d{3})(?P<zzz>\w+)(?P=abc)","123abcd123").start("abc"))
print(re.search("(?P<abc>\d{3})(?P<zzz>\w+)(?P=abc)","123abcd123").start("zzz"))# 执行结果
0
3
0
3

end() 返回指定分组的结束为止的前一个为止

print(re.search("(?P<abc>\d{3})(?P<zzz>\w+)(?P=abc)","123abcd123").end(2))  # 7
print(re.search("(?P<abc>\d{3})(?P<zzz>\w+)(?P=abc)","123abcd123").end("zzz"))  # 7

re模块方法

这里写图片描述

正则表达式对象
这里写图片描述

这里写图片描述

# 不适用正则对象的话
print(re.findall("\d+","123abc123"))
# ['123', '123']# 使用正则对象的话
com = re.compile("\d+")  # 规则
print(com.findall("123abc123"))  # 结果通过规则来调用方法
# ['123', '123']# 把规则提出来,然后进行重复调用

match search findall
这里写图片描述

这里写图片描述

sub subn
这里写图片描述

这里写图片描述
sub还可以指定替换次数(第三个参数)

split
这里写图片描述

一个re.split的坑

print(re.split("[ab]","abc"))       # ['', '', 'c']
# 首先按a来分'abc' a左边没有内容 就为''
# 右边有bc 现在分出来 '''bc' 两部分
# 然后按b来分 b来分'bc' 左边没有内容 就为''
# 右边有一个'c' 所以最后得到 ['', '', 'c']###########################################################
print(re.split("[ab]","asdabcd"))
# 首先按a来分'asdabcd' 左边为空 右边为sdabcd
# 然后按a来分右边为sdabcd 左边为sd 右边为bcd
# 然后按b来分 bcd 左边为 '' 右边为 cd
# 所以结果是 ['','sd','','cd']

http://chatgpt.dhexx.cn/article/sutUj9Fe.shtml

相关文章

1.连接服务器

1 使用服务器 参考文章&#xff1a;https://blog.csdn.net/longgeaisisi/article/details/78680180 双11通过团购入手阿里云服务器会得到一个提货券&#xff0c;同时收到短信提醒&#xff0c;跟着短信链接&#xff0c;进入阿里云控制台使用提货券。然后&#xff0c;会出现选项…

windows下连接服务器

一、windows下连接服务器 xhsell 是一个windows的软件 是用来连接远程服务器的 使用的是ssh协议 xftp 一个windows的软件 用来给服务器 上传或者下载文件的一个工具 ftp协议 shell环境 是运行命令的环境 shell脚本 用于给运维人员 来去做批量处理的 一个语言shell语言编写的一个…

linux之连接服务器

1. 背景 通常连接服务器使用ssh usernamehostname的方式&#xff0c;其中uername是用户名&#xff0c;一般为root等。hostname为ip地址。但是ip地址通常不容易记住&#xff0c;因此会将ip地址与一个名称相对应&#xff0c;然后直接使用名字来登陆服务器。 2. ip与name的映射 …

远程服务器怎么连接

利用windows自带远程桌面连接服务器&#xff0c;海星星 日付服务器 碉堡了 工具/原料 远程桌面 IP地址账号 方法/步骤 1 本商品直接使用WINDOWS自带的远程桌面连接就可以进行使用。 点开始——点运行&#xff08;或者直接用窗口键[win]R&#xff09;————在运行对话框输入m…

连接服务器

连接是什么意思 创建套接字之后&#xff0c;应用程序&#xff08;浏览器&#xff09;就会调用connect&#xff0c;随后协议栈会将本地的套接字与服务器的套接字进行连接。话说&#xff0c;以太网的网线都是一直连接的状态&#xff0c;我们并不需要来回插拔网线&#xff0c;那么…

创建链接服务器

GPS平台、网站建设、软件开发、系统运维&#xff0c;找森大网络科技&#xff01; https://cnsendnet.taobao.com 来自森大科技官方博客 http://www.cnsendblog.com/index.php/?p1862 给SQL Server创建连接服务器 一、 可视化界面操作 1.点击“新建连接服务器” 2.“常规”选…

如何连接云服务器

** - 本篇文章是&#xff1a;教跟我一样一开始不会连接远程云服务器的小白们 ** 首先你已经有一个公网ip&#xff08;在阿里云/腾讯云/等等许多地方都可以租到&#xff09; 注&#xff1a;作者本人申请了一个试用的华为云2008Windows64bit的服务器 以下教你如何一步步连接…

连接到服务器(1)

问题一&#xff08;未找到或无法访问服务器&#xff09; 标题: 连接到服务器 ------------------------------ 无法连接到 TOM-PC。 ------------------------------ 其他信息: 在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器。请验证…

如何连接服务器

1&#xff1a; 先进入 C:/uers/<username>/.ssh/config 2:添加 Host <IP> HostName <IP> User <username> 3进入vscode 设置 搜索 remote 然后连接

远程连接服务器

1、什么是远程连接服务器 远程连接服务器通过文字或图形接口方式来远程登录系统&#xff0c;让你在远程终端前 登录 linux 主机以取得可操作主机接口&#xff08;shell&#xff09;&#xff0c;而登录后的操作感觉就像是坐 在系统前面一样。 2、远程连接服务器的功能 分享主机…

手把手教你如何连上实验室的服务器

目录 1.服务器到底是啥 2.怎么连上实验室的服务器 3.服务器文件与本机文件交互 4.服务器空闲查询 5.VSCode远程连接服务器 6.python实验环境配置​​​​​​​ 好了&#xff0c;数据集准备好了&#xff0c;网络模型也搭好了&#xff0c;是骡子是马就差把它拉出来遛一遛了…

撸一撸Spring Framework-IoC-资源管理利器(Resource、ResourceLoader、ResourcePatternResolver)

撸一撸Spring Framework-IoC系列文章目录 IoC概述 BeanFactory ApplicationContext BeanDefinition BeanWrapper 资源管理利器(Resource与ResourceLoader) 配置管理(Environment与PropertySource) 实现通用功能的利器(PostProcessor机制) 我们经常需要读取外部资源到应…

uni-app 资源在线升级/热更新

HBuilderX 1.6.5 起&#xff0c;uni-app 支持生成 App 资源升级包。 生成 App 资源升级包 修改版本号 首先&#xff0c;更新 manifest.json 中的版本号。 比如之前是 1.0.0&#xff0c;那么新版本应该是 1.0.1 或 1.1.0 这样。 发行 然后&#xff0c;在 HBuilderX 中生成升…

【有手就行】定制一个GIF表情

前言&#x1f447; 完成这个任务不需要安装任何编程软件&#xff0c;不需要任何基础&#xff0c;有手就行&#xff01; 效果图&#x1f447; &#xff08;御用素材&#x1f438;S先生&#xff09;&#x1f447; 制作步骤&#x1f447; ①登陆网址https://benisland.neocitie…

Squish 7.0中视频捕获 (含相关网络直播研讨会报名信息)

本文翻译自Video capture in Squish 7.0 – feature focus &#xff08;原文发布于2022年3月4日&#xff09; 原文作者&#xff1a;Qt公司软件工程师Katarina Behrens 翻译&#xff1a;Joyce Jiang Squish GUI Tester 7.0是首个提供独特新功能的Squish版本&#xff1a;通过捕获…

(一)squid简介

1、一些squid的概念 squid是一个缓存服务器的守护进程&#xff0c;其支持的代理协议&#xff1a;FTP,HTTP,SSL,套接字。 存储分类&#xff1a;磁盘>分区>目录>Object&#xff08;缓存文件&#xff09; 索引方式&#xff1a; Hash Tables 目录 每个Digest的索…

【深入UCSC Genome Brower】他山之石

转自&#xff1a;https://mp.weixin.qq.com/s?__bizMzAwMzY4MTYxNw&mid2655752921&idx1&sn159f79dde58d2145c59307e23a06b97a&scene0#wechat_redirect 这是一个神奇的网站&#xff1a;UCSC Genome Brower 有朋友在后台留言让介绍下UCSC Genome Browser&#x…

SWISH

①基础符号&#xff1a; :- 输出 \ 非 ②判断是否匹配文字备注 例1&#xff08;未匹配成功&#xff09; 例2&#xff08;输出a所在的list&#xff1a;N&#xff1f;&#xff09; 例3

Swish hard-Swish

当β = 0时,Swish变为线性函数f(x)=x/2 β → ∞, σ(x)=(1+exp(−x))−1σ(x)=(1+exp⁡(−x))−1为0或1. Swish变为ReLU: f(x)=2max(0,x) 所以Swish函数可以看做是介于线性函数与ReLU函数之间的平滑函数. beta是个常数或者可以训练的参数。其具有无上界有下界、平滑、非单调的…

Squid服务

Squid服务 一、Squid 服务基础 Squid 是 Linux 系 统 中 最 常 用 的 一 款 开 源 代 理 服 务 软 件 &#xff0c;可以很好地实现 HTTP 和 FTP&#xff0c;以及 DNS 查询、SSL 等应 用的缓存代理&#xff0c;功能十分强大。 官 方 网 站 为&#xff1a; http://www.squid-c…