正则表达式

正则表达式,又称正规表示法、常规表示法(Regular Expression,在代码中常简写为regex、regexp或RE),是一种用于匹配和处理文本的强大工具,它使用特定的字符和符号组合来描述文本模式。以下是关于正则表达式的基本介绍和使用方法:

基本概念

  • 字符类:用方括号[]表示,用于匹配方括号内的任意一个字符。例如,[abc]可以匹配abc中的任意一个字符。
  • 元字符:具有特殊含义的字符。例如^表示匹配字符串的开始位置,$表示匹配字符串的结束位置。如果在字符类中使用^,则表示取反,如[^abc]表示匹配除了abc之外的任意字符。
  • 量词:用于指定前面的字符或字符组出现的次数。例如,*表示匹配前面的字符或字符组零次或多次,+表示匹配前面的字符或字符组一次或多次,?表示匹配前面的字符或字符组零次或一次。{n}表示恰好匹配n次,{n,}表示至少匹配n次,{n,m}表示匹配nm次。
  • 转义字符:反斜杠\用于转义特殊字符,使其失去特殊含义,仅仅表示字符本身。例如,\.表示匹配实际的点号字符,而不是元字符的点号。

常用操作

  • 匹配:检查一个字符串是否符合某个正则表达式定义的模式。例如,判断一个字符串是否是合法的邮箱地址,可以使用正则表达式^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$。在Python中,可以使用re模块的match()函数来进行匹配操作,示例代码如下:
import repattern = r'^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$'
string = 'test@example.com'
match = re.match(pattern, string)
if match:print('匹配成功')
else:print('匹配失败')
  • 查找:在一个字符串中查找所有符合正则表达式模式的子串。例如,在一段文本中查找所有的电话号码。在Python中,使用re模块的findall()函数,示例如下:
import repattern = r'\d{3}-\d{8}|\d{4}-\d{7}'  # 匹配电话号码格式,如010-12345678或020-1234567
string = '我的电话号码是010-12345678,或者020-1234567'
matches = re.findall(pattern, string)
print(matches)
  • 替换:将符合正则表达式模式的子串替换为其他内容。例如,将文本中的所有数字替换为*。在Python中,通过re模块的sub()函数来实现,示例如下:
import repattern = r'\d+'
string = 'abc123def456ghi'
new_string = re.sub(pattern, '*', string)
print(new_string)
  • 分割:根据正则表达式模式将字符串分割成多个子串。例如,根据逗号或空格将一个字符串分割成多个单词。在Python中,使用re模块的split()函数,示例如下:
import repattern = r'[,\s]+'
string = 'apple,banana orange;pear'
parts = re.split(pattern, string)
print(parts)

不同的编程语言对正则表达式的支持和使用方式可能会略有不同,但基本的原理和语法是相似的。在实际使用中,需要根据具体的需求和编程语言来选择合适的方法和函数。


以下是一些常见的正则表达式

数字相关

  • 整数^-?\d+$,用于匹配整数,包括正整数、负整数和0。其中^$分别表示字符串的开始和结束位置,-?表示可选的负号,\d+表示一个或多个数字。
  • 正整数^[1-9]\d*$,匹配大于0的整数,[1-9]表示首位数字是1到9中的一个,\d*表示后面可以跟零个或多个数字。
  • 浮点数^-?\d+(\.\d+)?$,可以匹配浮点数,如3.14-2.5等。(\.\d+)?表示可选的小数部分,其中\.表示匹配小数点,\d+表示小数点后面的数字。

字符串相关

  • 非空字符串^.+$,匹配至少包含一个字符的字符串,.+表示匹配一个或多个任意字符。
  • 字母字符串^[a-zA-Z]+$,用于匹配由字母组成的字符串,[a-zA-Z]表示匹配任意一个大小写字母,+表示一个或多个。
  • 字母数字字符串^[a-zA-Z0-9]+$,匹配由字母和数字组成的字符串。

日期时间相关

  • YYYY-MM-DD格式日期^\d{4}-\d{2}-\d{2}$,用于匹配如2024-01-01格式的日期,\d{4}表示四位数字的年份,\d{2}表示两位数字的月份和日期。
  • HH:MM:SS格式时间^\d{2}:\d{2}:\d{2}$,可以匹配如12:30:00格式的时间,\d{2}分别表示小时、分钟和秒的两位数字。

其他

  • 邮箱地址^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$,用于验证邮箱地址的合法性,前面部分[a-zA-Z0-9_.+-]+匹配邮箱用户名,中间@为分隔符,后面[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+匹配域名部分。
  • 手机号码(中国大陆)^1[3-9]\d{9}$,匹配以1开头,第二位是3到9中的一个数字,后面跟着9位数字的手机号码。
  • 身份证号码(中国大陆)^\d{17}[\dXx]$^\d{15}$,18位身份证号码匹配^\d{17}[\dXx]$,其中前17位是数字,最后一位可以是数字或X(大小写均可);15位身份证号码匹配^\d{15}$,全部为数字。
  • URL^https?://[^\s/$.?#].[^\s]*$,用于匹配常见的URL地址,https?表示匹配httphttps协议,://为协议分隔符,[^\s/$.?#]表示域名的开始字符不能是空格、/$.?#[^\s]*表示匹配除空格以外的任意字符。

参考:正则表达式手册

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

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

相关文章

力扣257. 二叉树的所有路径(遍历思想解决)

Problem: 257. 二叉树的所有路径 文章目录 题目描述思路复杂度Code 题目描述 思路 遍历思想(利用二叉树的先序遍历) 利用先序遍历的思想,我门用一个List变量path记录当前先序遍历的节点,当遍历到根节点时,将其添加到另一个List变量res中&…

JVM运行时数据区域-附面试题

Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域 有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而一直存在,有些区域则是 依赖用户线程的启动和结束而建立和销毁。 1. 程序计…

向上调整算法(详解)c++

算法流程: 与⽗结点的权值作⽐较,如果⽐它⼤,就与⽗亲交换; 交换完之后,重复 1 操作,直到⽐⽗亲⼩,或者换到根节点的位置 这里为什么插入85完后合法? 我们插入一个85,…

数据库备份、主从、集群等配置

数据库备份、主从、集群等配置 1 MySQL1.1 docker安装MySQL1.2 主从复制1.2.1 主节点配置1.2.2 从节点配置1.2.3 创建用于主从同步的用户1.2.4 开启主从同步1.2.4 主从同步验证 1.3 主从切换1.3.1 主节点设置只读(在192.168.1.151上操作)1.3.2 检查主从数…

【题解】AtCoder Beginner Contest ABC391 D Gravity

题目大意 原题面链接 在一个 1 0 9 W 10^9\times W 109W 的平面里有 N N N 个方块。我们用 ( x , y ) (x,y) (x,y) 表示第 x x x 列从下往上数的 y y y 个位置。第 i i i 个方块的位置是 ( x i , y i ) (x_i,y_i) (xi​,yi​)。现在执行无数次操作,每一次…

FFmpeg工具使用基础

一、FFmpeg工具介绍 FFmpeg命令行工具主要包括以下几个部分: ‌ffmpeg‌:编解码工具‌ffprobe‌:多媒体分析器‌ffplay‌:简单的音视频播放器这些工具共同构成了FFmpeg的核心功能,支持各种音视频格式的处理和转换‌ 二、在Ubuntu18.04上安装FFmpeg工具 1、sudo apt-upda…

自制虚拟机(C/C++)(二、分析引导扇区,虚拟机读二进制文件img软盘)

先修复上一次的bug&#xff0c;添加新指令&#xff0c;并增加图形界面 #include <graphics.h> #include <conio.h> #include <windows.h> #include <commdlg.h> #include <iostream> #include <fstream> #include <sstream> #inclu…

LeetCode:63. 不同路径 II

跟着carl学算法&#xff0c;本系列博客仅做个人记录&#xff0c;建议大家都去看carl本人的博客&#xff0c;写的真的很好的&#xff01; 代码随想录 LeetCode&#xff1a;63. 不同路径 II 给定一个 m x n 的整数数组 grid。一个机器人初始位于 左上角&#xff08;即 grid[0][0]…

索引的底层数据结构、B+树的结构、为什么InnoDB使用B+树而不是B树呢

索引的底层数据结构 MySQL中常用的是Hash索引和B树索引 Hash索引&#xff1a;基于哈希表实现的&#xff0c;查找速度非常快&#xff0c;但是由于哈希表的特性&#xff0c;不支持范围查找和排序&#xff0c;在MySQL中支持的哈希索引是自适应的&#xff0c;不能手动创建 B树的…

EigenLayer联合Cartesi:打造面向主流用户的DeFi、AI等新用例

EigenLayer 与 Cartesi 正在开展合作&#xff0c;致力于弥合基础设施协议与终端用户应用之间的鸿沟&#xff1b;鼓励核心开发人员构建人工智能代理、复杂 DeFi、游戏、社交网络等应用场景&#xff1b;得益于 Cartesi 基于 Linux 的协处理器&#xff0c;开发者可复用现有软件库和…

DeepSeek-R1论文研读:通过强化学习激励LLM中的推理能力

DeepSeek在朋友圈&#xff0c;媒体&#xff0c;霸屏了好长时间&#xff0c;春节期间&#xff0c;研读一下论文算是时下的回应。论文原址&#xff1a;[2501.12948] DeepSeek-R1: Incentivizing Reasoning Capability in LLMs via Reinforcement Learning 摘要&#xff1a; 我们…

MINIRAG: TOWARDS EXTREMELY SIMPLE RETRIEVAL-AUGMENTED GENERATION论文翻译

感谢阅读 注意不含评估以后的翻译原论文地址标题以及摘要介绍部分MiniRAG 框架2.1 HETEROGENEOUS GRAPH INDEXING WITH SMALL LANGUAGE MODELS2.2 LIGHTWEIGHT GRAPH-BASED KNOWLEDGE RETRIEVAL2.2.1 QUERY SEMANTIC MAPPING2.2.2 TOPOLOGY-ENHANCED GRAPH RETRIEVAL 注意不含评…

Kafka中文文档

文章来源&#xff1a;https://kafka.cadn.net.cn 什么是事件流式处理&#xff1f; 事件流是人体中枢神经系统的数字等价物。它是 为“永远在线”的世界奠定技术基础&#xff0c;在这个世界里&#xff0c;企业越来越多地使用软件定义 和 automated&#xff0c;而软件的用户更…

【学习笔记】深度学习网络-正则化方法

作者选择了由 Ian Goodfellow、Yoshua Bengio 和 Aaron Courville 三位大佬撰写的《Deep Learning》(人工智能领域的经典教程&#xff0c;深度学习领域研究生必读教材),开始深度学习领域学习&#xff0c;深入全面的理解深度学习的理论知识。 在之前的文章中介绍了深度学习中用…

Flutter常用Widget小部件

小部件Widget是一个类&#xff0c;按照继承方式&#xff0c;分为无状态的StatelessWidget和有状态的StatefulWidget。 这里先创建一个简单的无状态的Text小部件。 Text文本Widget 文件&#xff1a;lib/app/app.dart。 import package:flutter/material.dart;class App exte…

浅色可视化大屏虽然经常被诟病,也有自己的用武之地呀

一、视觉舒适性与减轻疲劳 在长时间的使用和观察中&#xff0c;浅色可视化大屏能够为用户带来更舒适的视觉体验&#xff0c;减轻视觉疲劳。与深色背景相比&#xff0c;浅色背景通常反射的光线较少&#xff0c;对眼睛的刺激相对较小。尤其是在需要长时间盯着大屏进行数据分析…

Office / WPS 公式、Mathtype 公式输入花体字、空心字

注&#xff1a;引文主要看注意事项。 1、Office / WPS 公式中字体转换 花体字 字体选择 “Eulid Math One” 空心字 字体选择 “Eulid Math Two” 使用空心字时&#xff0c;一般不用斜体&#xff0c;取消勾选 “斜体”。 2、Mathtype 公式输入花体字、空心字 2.1 直接输…

el-table组件样式如何二次修改?

文章目录 前言一、去除全选框按钮样式二、表头颜色的修改 前言 ElementUI中的组件el-table表格组件提供了丰富的样式&#xff0c;有一个全选框的el-table组件&#xff0c;提供了全选框和多选。 一、去除全选框按钮样式 原本默认是有全选框的。假如有一些开发者&#xff0c;因…

Python安居客二手小区数据爬取(2025年)

目录 2025年安居客二手小区数据爬取观察目标网页观察详情页数据准备工作&#xff1a;安装装备就像打游戏代码详解&#xff1a;每行代码都是你的小兵完整代码大放送爬取结果 2025年安居客二手小区数据爬取 这段时间需要爬取安居客二手小区数据&#xff0c;看了一下相关教程基本…

【13】WLC HA介绍和配置

1.概述 本文对AireOS WLC的HA进行介绍,和大多数网络架构设计一样,单台的WLC是无法保证设备的冗余性的,而且WLC也不是双引擎的设备,所以需要依靠High Available的技术来为WLC提供高可用性。 2.WLC HA类型 AireOS WLC的高可用性技术可以分为N+1的SSO的HA。不是所有的设备都…