26、正则表达式
目录
一. 匹配字符
.:匹配除换行符外的任意单个字符。
二. 位置锚点
^:匹配输入字符串的开始位置。
$:匹配输入字符串的结束位置。
\b:匹配单词边界。
\B:匹配非单词边界。
三. 重复限定符
*:匹配前面的字符或子表达式零次或多次(贪婪模式)。
+:匹配前面的字符或子表达式一次或多次(贪婪模式)。
?:匹配前面的字符或子表达式零次或一次(懒惰模式)。
{n}:匹配前面的字符或子表达式恰好n次。
{n,}:匹配前面的字符或子表达式至少n次。
{n,m}:匹配前面的字符或子表达式至少n次,但不超过m次。
四. 分支条件
|:逻辑“或”,匹配两个或多个选项中的一个。
五. 字符类
[abc]:匹配方括号内的任意一个字符。
[^abc]:匹配不在方括号内的任意一个字符。
\d:匹配任何数字字符。
\D:匹配任何非数字字符。
\s:匹配任何空白字符。
\S:匹配任何非空白字符。
\w:匹配任何字母数字字符及下划线。
\W:匹配任何非字母数字字符及非下划线。
六. 转义字符
\:转义字符,用于匹配元字符本身或特殊序列。
七. 特殊序列
\t:匹配制表符(Tab)。
\n:匹配换行符。
\r:匹配回车符。
\f:匹配换页符。
\v:匹配垂直制表符。
八. 分组和引用
():创建捕获组,用于分组和提取匹配的文本。
(?:...):创建非捕获组,用于分组但不捕获匹配的文本。
\数字:后向引用,引用之前捕获组匹配的文本。配合捕获组使用
九. 断言
(?=...):正向先行断言,匹配后面跟着特定模式的字符串。
(?!...):负向先行断言,匹配后面不跟着特定模式的字符串。
(?<=...):正向后行断言,匹配前面有特定模式的字符串。
(?
十. Unicode 和其他属性
十一. 递归
十二.重复模式
正则表达式(Regular Expression,简称Regex)是一种用于字符串搜索和操作的强大工具,它使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。它是一套独立的规范,各类编程语言都会提供一些API,支持正则表达式。正则表达式由普通字符(例如,a-z、A-Z、0-9)和特殊字符(称为“元字符”)组成。以下是一些常用的元字符及其含义:
当然,以下是正则表达式元字符和特性的分类,每个都附有一个简单的案例和清晰的输出格式说明:
一. 匹配字符
.:匹配除换行符外的任意单个字符。
示例:
a.t匹配 "act"、"a1t" 或 "a!t"。
二. 位置锚点
^:匹配输入字符串的开始位置。
示例:
^Hello匹配以 "Hello" 开头的句子。
-
$:匹配输入字符串的结束位置。
示例:
World$匹配以 "World" 结尾的句子。
\b:匹配单词边界。
示例:
\bworld这个正则表达式匹配的是 "world" 作为一个完整单词出现的情况
-
\B:匹配非单词边界。
示例:
\Bworld \B匹配 "helloworld" 中的 "world"。
三. 重复限定符
*:匹配前面的字符或子表达式零次或多次(贪婪模式)。
示例:
a*匹配 "a"、"aa" 或 "aaa"。
+:匹配前面的字符或子表达式一次或多次(贪婪模式)。
示例:
a+匹配 "a"、"aa" 或 "aaa",但不匹配空字符串。
?:匹配前面的字符或子表达式零次或一次(懒惰模式)。
示例:
a?匹配 "a" 或空字符串。
{n}:匹配前面的字符或子表达式恰好n次。
示例:
a{3}匹配 "aaa"。
{n,}:匹配前面的字符或子表达式至少n次。
示例:
a{3,}匹配 "aaa"、"aaaa" 或 "aaaaa"。
{n,m}:匹配前面的字符或子表达式至少n次,但不超过m次。
示例:
a{2,3}匹配 "aa" 或 "aaa"。
四. 分支条件
|:逻辑“或”,匹配两个或多个选项中的一个。
示例:
cat|dog匹配 "I have a cat" 或 "I have a dog"。
五. 字符类
[abc]:匹配方括号内的任意一个字符。
示例:
[abc]匹配 "a"、"b" 或 "c"。
[^abc]:匹配不在方括号内的任意一个字符。
示例:
[^abc]匹配 "d"、"e" 或 "f"。
\d:匹配任何数字字符。
示例:
\d匹配 "1"、"2" 或 "3"。
\D:匹配任何非数字字符。
示例:
\D匹配 "a"、"b" 或 "c"。
\s:匹配任何空白字符。
示例:
\s匹配空格、制表符或换行符。
\S:匹配任何非空白字符。
示例:
\S匹配 英文字母。
-
\w:匹配任何字母数字字符及下划线。
示例:
\w匹配 "a"、"1" 或 "_"。
-
\W:匹配任何非字母数字字符及非下划线。
示例:
\W匹配空格或 "!"。
六. 转义字符
\:转义字符,用于匹配元字符本身或特殊序列。
示例:
\.匹配实际的点字符。
七. 特殊序列
\t:匹配制表符(Tab)。
示例:
\t匹配制表符。
\n:匹配换行符。
示例:
\n匹配换行符。
\r:匹配回车符。
示例:
\r匹配回车符。(回车符:将光标移回行首,不换行。换行符:将光标移至下一行开头,换行。)Windows回车换行符都是enter键,单独敲出太麻烦,算了
\f:匹配换页符。
示例:
\f匹配换页符。通常用于打印机或文本处理软件中,以指示开始新的一页。在大多数文本编辑器或命令行界面中,换页符不是通过键盘直接输入的。没法演示。
\v:匹配垂直制表符。
示例:
\v匹配垂直制表符。垂直制表符通常不通过键盘直接输入,因为它主要用于老式的电传打字机和一些特殊的文本处理场景。
八. 分组和引用
():创建捕获组,用于分组和提取匹配的文本。
示例:
(abc)匹配 "abc" 并捕获它。
(?:...):创建非捕获组,用于分组但不捕获匹配的文本。
示例:
(?:abc)匹配 "abc" 但不捕获它。说明:在正则表达式中使用它来对子表达式进行分组,但是不捕获匹配的结果。这意味着匹配到的内容不会像捕获组那样被存储起来,以便后续使用。
\数字:后向引用,引用之前捕获组匹配的文本。配合捕获组使用
示例:
(abc)\1匹配 "abcabc"。匹配文本abc出现两次,并且中间没有任何其他符号。
九. 断言
(?=...):正向先行断言,匹配后面跟着特定模式的字符串。
示例:
abc(?=def)匹配 "abc" 后面跟着 "def"。
(?!...):负向先行断言,匹配后面不跟着特定模式的字符串。
示例:
abc(?!def)匹配 "abc" 后面不跟着 "def"。
-
(?<=...):正向后行断言,匹配前面有特定模式的字符串。
示例:
(?<=def)abc匹配 "abc" 前面有 "def"。
(?<!...):负向后行断言,匹配前面没有特定模式的字符串。
示例:
(?<!def)abc匹配 "abc" 前面没有 "def"。
十. Unicode 和其他属性
-
\p{...}:匹配具有特定 Unicode 属性的字符。
示例:
\p{L}匹配任何字母很多正则表达式引擎不支持 Unicode 属性转义或没有启用Unicode模式,暂时没测试。
十一. 递归
-
(?R):递归匹配,正则表达式可以引用自身。
示例:
(?R)可以递归地匹配重复的模式。正则表达式引擎不支持递归模式,暂时没测试。
十二.重复模式
-
贪婪模式:对于重复限定符,默认情况下会匹配尽可能多的字符,这叫做贪婪模式。
-
懒惰模式:在重复限定符之后加上
?,表示匹配尽可能少的字符,这叫做懒惰模式。
相关文章:
26、正则表达式
目录 一. 匹配字符 .:匹配除换行符外的任意单个字符。 二. 位置锚点 ^:匹配输入字符串的开始位置。 $:匹配输入字符串的结束位置。 \b:匹配单词边界。 \B:匹配非单词边界。 三. 重复限定符 *:匹配…...
SpringBoot使用MockMVC通过http请求controller控制器调用测试
说明 在Spring Boot中编写测试控制器调用是一个常见的需求,通常使用Spring的测试框架来完成。Spring Boot提供了多种方式来测试控制器,包括使用MockMvc进行模拟HTTP请求和响应的测试。 基本示例 1. 创建Spring Boot项目 首先,确保你已经创建了一个Spring Boot项目。如果…...
【Unity3D】Unity混淆工具Obfuscator使用
目录 一、导入工具 二、各种混淆形式介绍 2.1 程序集混淆 2.2 命名空间混淆 2.3 类混淆 2.4 函数混淆 2.5 参数混淆 2.6 字段混淆 2.7 属性混淆 2.8 事件混淆 三、安全混淆 四、兼容性处理 4.1 动画方法兼容 4.2 GUI方法兼容 4.3 协程方法兼容 五、选项 5.1 调…...
C语言语法基础学习—动态分配空间(new和malloc的用法及区别)
前言 在 C 语言中,动态内存分配主要是通过 malloc() 和 free() 函数来完成的。而在 C 中是使用new和delete关键字,来动态分配内存。 虽然 C 语言没有 new,但 malloc() 和 new 在内存分配上的作用是相似的。下面我们详细解释 malloc() 和 ne…...
QT:控件属性及常用控件(3)-----输入类控件(正则表达式)
输入类控件既可以进行显示,也能让用户输入一些内容! 文章目录 1.Line Edit1.1 用户输入个人信息1.2 基于正则表达式的文本限制1.3 验证两次输入的密码是否一致1.4 让输入的密码可以被查看 2.Text Edit2.1 输入和显示同步2.1 其他信号出发情况 3.ComboBox…...
Hive SQL 执行计划解析
Hive SQL 执行计划解析 一、 explain用法 1. SQL 查询 EXPLAIN SELECT SUM(view_dsp) AS view_sum FROM ads.table_a WHERE p_day 2025-01-06;2. 执行计划 STAGE DEPENDENCIES:Stage-1 is a root stageStage-0 depends on stages: Stage-1STAGE PLANS:Stage: Stage-1Map …...
热更新杂乱记
热更新主要有一个文件的MD5值的比对过程,期间遇到2个问题,解决起来花费了一点时间 1. png 和 plist 生成zip的时候再生成MD5值会发生变动。 这个问题解决起来有2种方案: (1).第一个方案是将 png和plist的文件时间改…...
博客搭建 — GitHub Pages 部署
关于 GitHub Pages GitHub Pages 是一项静态站点托管服务,它直接从 GitHub 上的仓库获取 HTML、CSS 和 JavaScript 文件,通过构建过程运行文件,然后发布网站。 本文最终效果是搭建出一个域名为 https://<user>.github.io 的网站 创建…...
翻译:How do I reset my FPGA?
文章目录 背景翻译:How do I reset my FPGA?1、Understanding the flip-flop reset behavior2、Reset methodology3、Use appropriate resets to maximize utilization4、Many options5、About the author 背景 在写博客《复位信号的同步与释放(同步复…...
Linux 进程环境变量:深入理解与实践指南
🌟 快来参与讨论💬,点赞👍、收藏⭐、分享📤,共创活力社区。🌟 🚩用通俗易懂且不失专业性的文字,讲解计算机领域那些看似枯燥的知识点🚩 在 Linux 系统里…...
Linux探秘坊-------5.git
1.git介绍 1.版本控制器 为了能够更⽅便我们管理这些不同版本的⽂件,便有了版本控制器。所谓的版本控制器,就是能让你了解到⼀个⽂件的历史,以及它的发展过程的系统。通俗的讲就是⼀个可以记录⼯程的每⼀次改动和版本迭代的⼀个管理系统&am…...
Linux中的几个基本指令(二)
文章目录 1、cp指令例一:例二:例三:例四:例五: 2、mv 指令例一:例二: 3、cat指令例一: 4、tac指令5、which指令6、date指令时间戳:7、zip指令 今天我们继续学习Linux下的…...
Java入门笔记(1)
引言 在计算机编程的广袤宇宙中,Java无疑是一颗格外耀眼的恒星。那么,Java究竟是什么呢? Java是美国Sun公司(Stanford University Network)在1995年推出的一门计算机高级编程语言。曾经辉煌的Sun公司在2009年被Oracle&…...
设计模式的艺术-开闭原则
原则使用频率图(仅供参考) 1.如何理解开闭原则 简单来说,开闭原则指的是 “对扩展开放,对修改关闭”。 当软件系统需要增加新的功能时,应该通过扩展现有代码的方式来实现,而不是去修改已有的代码。 例如我…...
【C语言系列】深入理解指针(3)
深入理解指针(3) 一、字符指针变量二、数组指针变量2.1数组指针变量是什么?2.2数组指针变量怎么初始化? 三、二维数组传参的本质四、函数指针变量4.1函数指针变量的创建4.2函数指针变量的使用4.3两段有趣的代码4.4 typedef关键字 …...
three.js+WebGL踩坑经验合集:写在前面的话
笔者从2023年初开始参与一个基于three.js引擎的web项目的开发工作。本打算2024年春节就把期间踩过的坑写到博客上分享给大家,然而哪怕本专栏的各种构思和内容已经在笔者的脑海里翻滚了一年,得了严重拖延症患者的我还是一直拖到了现在,实在惭愧…...
利用Linux的工作队列(Workqueue)实现中断下半部的处理
本文代码在哪个基础上修改而成? 本文是在博文 https://blog.csdn.net/wenhao_ir/article/details/145228617 的代码基础上修改而成。 关于工作队列(Workqueue)的概念 工作队列(Workqueue)可以用于实现Linux的中断下半部的,之前在博文 https://blog.cs…...
LabVIEW处理复杂系统和数据处理
LabVIEW 是一个图形化编程平台,广泛应用于自动化控制、数据采集、信号处理、仪器控制等复杂系统的开发。它的图形化界面使得开发人员能够直观地设计系统和算法,尤其适合处理需要实时数据分析、高精度控制和复杂硬件集成的应用场景。LabVIEW 提供丰富的库…...
spring-springboot -springcloud
目录 spring: 动态代理: spring的生命周期(bean的生命周期): SpringMvc的生命周期: SpringBoot: 自动装配: 自动装配流程: Spring中常用的注解: Spring Boot中常用的注解: SpringCloud: 1. 注册中心: 2. gateway(网关): 3. Ribbon(负载均…...
DRG/DIP 2.0时代下基于PostgreSQL的成本管理实践与探索(下)
五、数据处理与 ETL 流程编程实现 5.1 数据抽取与转换(ETL) 在 DRG/DIP 2.0 时代的医院成本管理中,数据抽取与转换(ETL)是将医院各个业务系统中的原始数据转化为可供成本管理分析使用的关键环节。这一过程涉及从医院 HIS 系统中抽取患者诊疗数据,并对其进行格式转换、字…...
[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?
🧠 智能合约中的数据是如何在区块链中保持一致的? 为什么所有区块链节点都能得出相同结果?合约调用这么复杂,状态真能保持一致吗?本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里…...
【Python】 -- 趣味代码 - 小恐龙游戏
文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...
React第五十七节 Router中RouterProvider使用详解及注意事项
前言 在 React Router v6.4 中,RouterProvider 是一个核心组件,用于提供基于数据路由(data routers)的新型路由方案。 它替代了传统的 <BrowserRouter>,支持更强大的数据加载和操作功能(如 loader 和…...
抖音增长新引擎:品融电商,一站式全案代运营领跑者
抖音增长新引擎:品融电商,一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中,品牌如何破浪前行?自建团队成本高、效果难控;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...
【算法训练营Day07】字符串part1
文章目录 反转字符串反转字符串II替换数字 反转字符串 题目链接:344. 反转字符串 双指针法,两个指针的元素直接调转即可 class Solution {public void reverseString(char[] s) {int head 0;int end s.length - 1;while(head < end) {char temp …...
【git】把本地更改提交远程新分支feature_g
创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...
rnn判断string中第一次出现a的下标
# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...
短视频矩阵系统文案创作功能开发实践,定制化开发
在短视频行业迅猛发展的当下,企业和个人创作者为了扩大影响力、提升传播效果,纷纷采用短视频矩阵运营策略,同时管理多个平台、多个账号的内容发布。然而,频繁的文案创作需求让运营者疲于应对,如何高效产出高质量文案成…...
作为测试我们应该关注redis哪些方面
1、功能测试 数据结构操作:验证字符串、列表、哈希、集合和有序的基本操作是否正确 持久化:测试aof和aof持久化机制,确保数据在开启后正确恢复。 事务:检查事务的原子性和回滚机制。 发布订阅:确保消息正确传递。 2、性…...
五子棋测试用例
一.项目背景 1.1 项目简介 传统棋类文化的推广 五子棋是一种古老的棋类游戏,有着深厚的文化底蕴。通过将五子棋制作成网页游戏,可以让更多的人了解和接触到这一传统棋类文化。无论是国内还是国外的玩家,都可以通过网页五子棋感受到东方棋类…...






























