正则表达式全解:一文学会正则表达式【附在线正则表达式练习网站】
1.正则表达式的作用
案例演示
先给大家看一个例子,在以下文本中存储了一些职位信息:
Python3 高级开发工程师 上海互教教育科技有限公司上海-浦东新区2万/月02-18满员
测试开发工程师(C++/python) 上海墨鹍数码科技有限公司上海-浦东新区2.5万/每月02-18未满员
Python3 开发工程师 上海德拓信息技术股份有限公司上海-徐汇区1.3万/每月02-18剩余11人
测试开发工程师(Python) 赫里普(上海)信息科技有限公司上海-浦东新区1.1万/每月02-18剩余5人
Python高级开发工程师 上海行动教育科技股份有限公司上海-闵行区2.8万/月02-18剩余255人
python开发工程师 上海优似腾软件开发有限公司上海-浦东新区2.5万/每月02-18满员
将文本中的薪资数据提取出来,只要包含数字就可以。
代码实现
import recontent = '''
Python3 高级开发工程师 上海互教教育科技有限公司上海-浦东新区2万/月02-18满员
测试开发工程师(C++/python) 上海墨鹍数码科技有限公司上海-浦东新区2.5万/每月02-18未满员
Python3 开发工程师 上海德拓信息技术股份有限公司上海-徐汇区1.3万/每月02-18剩余11人
测试开发工程师(Python) 赫里普(上海)信息科技有限公司上海-浦东新区1.1万/每月02-18剩余5人
Python高级开发工程师 上海行动教育科技股份有限公司上海-闵行区2.8万/月02-18剩余255人
python开发工程师 上海优似腾软件开发有限公司上海-浦东新区2.5万/每月02-18满员
'''for temp in re.findall(r'([\d.]+)万/每{0,1}月', content):print(temp)
通过以上代码就可以轻松的将文本中的数字提取出来,在find_all
方法中的字符串其实就是正则表达式。观察当前方法返回的数据我们发现是一个列表。
2.正则表达式在线验证工具
工具链接地址:https://regexr-cn.com
在这个工具中我们可以快速验证自己编写的正则表达式是否存在语法错误。
3.常见语法
普通字符匹配
可以在正则表达式中直接输入我们想要匹配的字符,如图所示:
当然直接查询汉字也是可以的。但是有些特殊字符不能直接匹配,这些特殊字符有专业术语:元字符。
元字符具有特殊含义,如下所示:
. * + ? \ [] ^ $ {} | ()
通配符 - .
在以下文本中选出所有的颜色信息:
苹果是绿色的
橙子是橙色的
香蕉是黄色的
乌鸦是黑色的
在文本中找到以色
结尾,并且包括前面一个字符的信息,那么正则表达式就可以写成:
.色
当前.
代表任意字符,但是字符个数只有一个。色
这个汉字代表以这个汉字结尾。
代码实现
import recontent = '''
苹果是绿色的
橙子是橙色的
香蕉是黄色的
乌鸦是黑色的
'''for temp in re.findall(r'.色', content):print(temp)
重复匹配任意次数 - *
*
表示匹配子表达式任意次,包括0次。
在以下文本中匹配逗号后面的字符串内容,包含逗号本身:文本中的逗号为中文。
苹果,是绿色的
橙子,是橙色的
香蕉,是黄色的
乌鸦,是黑色的
猴子,
表达式语法:
,.*
效果如下:
大家注意最后一行,猴子逗号后面没有其它字符了,但是*表示可以匹配0次, 所以表达式也是成立的。
代码实现
content = '''
苹果,是绿色的
橙子,是橙色的
香蕉,是黄色的
乌鸦,是黑色的
猴子,
'''for temp in re.findall(r',.*', content):print(temp)
.*
在正则表达式中非常常见,表示匹配任意字符任意次数。当然,*
前面不一定就是.
,也可以是其他字符。
重复匹配一次或多次 - +
+
表示匹配前面的子表达式一次或多次,不包括0次。
以之前的文本为例,匹配所有逗号的内容,包含逗号。但是如果逗号后没有内容则不匹配。
表达式语法:
,.+
匹配0次或者1次 - ?
以之前的文本为例,在文本中匹配每行逗号后面的1个字符,也包含逗号本身。
表达式语法:
,.?
最后一行也可以正常匹配,原因是?
表示可以匹配1次或者0次。
匹配执行次数 - {}
{}
表示指定字符匹配的次数。
测试文本:
红彤彤,绿油油,黑乎乎,绿油油油油
- 表达式
油{3}
就表示匹配连续的油
字3次 - 表达式
油{3,4}
就表示匹配连续的油
字至少3次,至多4次
贪婪模式与非贪婪模式
将以下字符串中的所有html
标签提取出来:
<html><head><title></
相关文章:

正则表达式全解:一文学会正则表达式【附在线正则表达式练习网站】
1.正则表达式的作用 案例演示 先给大家看一个例子,在以下文本中存储了一些职位信息: Python3 高级开发工程师 上海互教教育科技有限公司上海-浦东新区2万/月02-18满员 测试开发工程师(C++/python) 上海墨鹍数码科技有限公司上海-浦东新区2.5万/每月02-18未满员 Python3 …...

Nginx-详解(二)
nginx 常见模块 第三方模块是对nginx 的功能扩展,第三方模块需要在编译安装nginx 的时候使用参数-- add-modulePATH指定路径添加,有的模块是由公司的开发人员针对业务需求定制 开发的,有的模块是开源爱好者开发好之后上传到github进行开源的…...
解决 IntelliJ IDEA 配置文件中文被转义问题
在使用 IntelliJ IDEA 进行开发时,我们经常需要编辑各种配置文件(如 .properties、.xml、.json 等)。然而,许多开发者都遇到过这样的困扰:配置文件中的中文内容被自动转义成了 Unicode 编码,显示为类似 \u4…...

MCP、MCPHub、A2A、AG-UI概述
MCP Model Context Protocol,模型上下文协议,Anthropic于2024年开源的标准协议,旨在统一AI模型与数据源的交互方式,提升数据访问的便捷性和可靠性,提供标准化的工具调用、资源管理和提示词功能。 MCP的基本定义&…...
计算机视觉与深度学习 | Python实现CEEMDAN-ISOS-VMD-GRU-ARIMA时间序列预测(完整源码和数据)
以下是结合CEEMDAN、ISOS-VMD、GRU和ARIMA的时间序列预测的Python完整实现方案。本方案包含完整的代码、数据生成逻辑和实现细节说明。 完整代码实现 import numpy as np import pandas as pd from PyEMD import CEEMDAN from vmdpy import VMD from scipy.optimize import di…...

[Linux]磁盘分区及swap交换空间
linux磁盘分区 计算机容量单位:一般用B,KB,MB,GB,TB,PB,EB,ZB,YB,BB来表示。 它们之间的关系是: 1KB (Kilobyte 千字节)1024B, 1MB (Megabyte 兆…...
JAVA面向对象——对象和类的基本语法
JAVA面向对象——对象和类的基本语法 一、面向对象编程基础 1. 程序中的数据存储方式 基本类型:变量(如 int max 15;)。数据结构:数组(一维/二维)、对象(特殊数据结构,用于存储复…...

Linux常见指令合集+知识点
Linux有一条设计理念:Linux中一切皆文件;这样的设计理念让Linux可以用一种统一的方式对Linux中的不同文件/设备进行管理;(也就是键盘、显示器等在Linux中也算文件) 文件内容属性,指令一般都是对文件进行操…...

nginx 基于IP和用户的访问
nginx的下载 yum install nginx.x86_64 -y 启动服务 systemctl enable --now nginx.service 查看服务目录 [rootwebserver ~]# rpm -ql nginx /usr/bin/nginx-upgrade /usr/lib/systemd/system/nginx.service /usr/share/man/man3/nginx.3pm.gz /usr/share/man/man8/nginx…...

【Linux】系统程序−进度条
文章目录 一、准备知识1.回车与换行1.1 回车1.2 换行 2. 行缓冲区3. 倒计时程序 二、进度条程序1. 版本1 一、准备知识 在讲解进度条之前,先讲解几个概念 1.回车与换行 1.1 回车 回车:\r 作用:将光标移动到当前行的行首(水平回…...
Axure应用交互设计:动态面板嵌套实现超强体验感菜单表头
亲爱的小伙伴,在您浏览之前,烦请关注一下,在此深表感谢!如有帮助请订阅专栏! Axure产品经理精品视频课已登录CSDN可点击学习https://edu.csdn.net/course/detail/40420 课程主题:动态面板嵌套 主要内容:利用动态面板多层嵌套实现菜单表头 应用场景:广泛应用于表单表…...

Linux(6)——第一个小程序(进度条)
目录 一、行缓冲区的概念 二、\r与\n 三、进度条代码书写与展示 1.如何表示进度条是在加载的 2.整体框架 3.书写 3.1makefile: 3.2process.h: 3.3process.c: 3.4main.c: 3.5美化 一、行缓冲区的概念 首先,我们来见一见行缓冲区,…...

CentOS:搭建国内软件repository,以实现自动yum网络安装
centosgit仓库_寂寞沙冷州的技术博客_51CTO博客 yum 很慢 centos yum安装慢_mob64ca1417b0c6的技术博客_51CTO博客 yum配置,文件,命令详解-CSDN博客 yum仓库简介_yum库是什么-CSDN博客 rootwww:/etc/yum.repos.d# pwd /etc/yum.repos.d ###创建下面这个.…...

[Git] 认识 Git 的三大区域 文件的修改和提交
文章目录 认识 Git 的三大区域:工作区、暂存区、版本库工作区、暂存区、版本库的关系流程图解 (概念) 将文件添加到仓库进行管理:git add 和 git commit场景一:第一次添加文件到仓库查看提交历史:git log(进阶理解&…...

RISC-V 开发板 MUSE Pi Pro USB 测试(3.0 U盘,2.0 UVC摄像头)
视频讲解: RISC-V 开发板 MUSE Pi Pro USB 测试(3.0 U盘,2.0 UVC摄像头) 总共开发板有4个USB的A口,1个USB的TypeC口,我们插上两个USB3.0的U盘和一个USB2.0的UVC摄像头来进行测试 lsusb -tv 可以看到有3个US…...

【520 特辑】用 HTML/CSS/JavaScript 打造浪漫炫酷的表白网页
一、前言 在 520 这个充满爱意的日子里,程序员该如何用代码表达浪漫?本文将分享一个结合动画特效与交互设计的 520 表白网页案例,通过 HTML/CSS/JavaScript 实现动态爱心、渐变背景、浮动文字等炫酷效果,手把手教你用技术传递心意…...

小米2025年校招笔试真题手撕(二)
一、题目 给一个长度为n的序列和一个整数x,每次操作可以选择序列中的一个元素,将其从序列中删去,或者将其值加一。 问至少操作多少次,可以使操作后的序列(可以为空)中数字之和是x的倍数。 输入描述&#…...
弱网服务器群到底有什么用
在当今数字化的时代,大家都在追求高速、稳定的网络体验,但你是否想过,弱网服务器群其实也有着不可小觑的作用。让我们来聊聊什么是弱网服务器群。简单来说,它是一组在网络条件相对较差情况下运行的服务器集合。 弱网服务器群组是一…...

部署Gitlab-CE with Docker私有云环境
应用环境 Ubuntu 20.04.6 LTS (GNU/Linux 5.15.0-139-generic x86_64) Docker version 28.1.1, build 4eba377 文章目录 拉取容器镜像生成Run脚本参数解读实例脚本环境配置管理员密码遗忘服务邮箱配置邮件测试 运维问题集锦(1) 端口映射关系(2) 服务日志(3) 分支受保护 项目操作…...
拉普拉斯高斯(LoG)滤波器掩模的注意事项
目录 问题: 解答: 一、高斯函数归一化:消除幅度偏差 1. 归一化的定义 2. 为何必须归一化? 二、拉普拉斯系数和为零:抑制直流项干扰 1. 拉普拉斯算子的特性 2. 系数和不为零的后果 三、直流项如何影响零交叉点&…...

铠大师:让用户畅享多元应用,助力鸿蒙生态发展
在全球信息技术产业格局加速重构的背景下,中国科技力量正以开放包容的姿态重塑操作系统生态范式。 5月19日,华为在成都举办的nova14系列及鸿蒙电脑新品发布会上,正式对外发布搭载了鸿蒙系统的笔记本电脑HUAWEI MateBook Pro与HUAWEI MateBoo…...
RocketMQ核心特性与最佳实践
目录 1. 引言 2. RocketMQ核心特性 2.1 架构演进 2.2 核心组件 2.3 消息模型 2.4 高级特性 3. RocketMQ与其他MQ产品选型对比 3.1 功能特性对比 3.2 适用场景对比 3.3 选型建议 4. RocketMQ部署最佳实践 4.1 部署模式选择 4.2 硬件配置建议 4.3 操作系统优化 4.4…...
springboot配置redis lettuce连接池,以及连接池参数解释
文章目录 前置基本配置参数解释 前置 javaspringbootredislettuce 连接池 有很多连接池,比如 jedis,lettuce,redission,springboot 默认使用 lettuce 连接池 lettuce 连接池的特点是:一个 lettuce 连接可以被多个线…...

基于aspnet,微信小程序,mysql数据库,在线微信小程序汽车故障预约系统
详细视频:【基于aspnet,微信小程序,mysql数据库,在线微信小程序汽车故障预约系统。-哔哩哔哩】 https://b23.tv/zfqLWPV...

如何使用AI搭建WordPress网站
人工智能正迅速成为包括网页设计在内的许多行业在其功能设置中添加的一种工具。在数字设计和营销领域,许多成熟的工具都在其产品中添加了人工智能功能。WordPress 也是如此。作为目前最流行的网站建设工具之一,WordPress 的人工智能插件越来越多也就不足…...
打破双亲委派模型的实践:JDBC与Tomcat的深度解析
一、JDBC如何打破双亲委派模型 1. JDBC SPI机制的核心矛盾 Java数据库连接(JDBC)是打破双亲委派模型的经典案例,其根本原因在于基础类库需要加载实现类的矛盾: 核心接口位置:java.sql.Driver等接口位于rt.jar中,由启动类加载器…...
《打破枷锁:Python多线程GIL困境突围指南》
GIL,这个Python解释器层面的独特机制,虽在一定程度上守护了内存管理的秩序,却也成为了多线程并行的紧箍咒,限制了Python在多核处理器上的性能发挥。今天,让我们深入剖析GIL的本质,探寻突破这一枷锁的有效策…...

Java并发编程:全面解析锁策略、CAS与synchronized优化机制
一、六种锁策略场景化解析 1. 乐观锁 vs 悲观锁:图书馆借书的两种策略 核心差异:对资源是否会被抢占的预期不同。 乐观锁(假设冲突概率低) → 行为:直接去书架上拿书(围绕加锁要做的工作更少)…...

2025第三届黄河流域网络安全技能挑战赛--Crypto--WriteUp
2025第三届黄河流域网络安全技能挑战赛–Crypto–WriteUp Crypto sandwitch task from Crypto.Util.number import * import gmpy2 flag bflag{fake_flag} assert len(flag) 39 p getPrime(512) q getPrime(512) n p * q e 0x3 pad1 beasy_problem pad2 bHow_to_so…...

[爬虫知识] IP代理
相关实战案例:[爬虫实战] 代理爬取:小白也能看懂怎么用代理 相关爬虫专栏:JS逆向爬虫实战 爬虫知识点合集 爬虫实战案例 引言:爬虫与IP封锁的攻防战 对网络爬虫而言,遇到的一个较棘手的问题就是封IP:请…...