首页 > 其他分享 >26、正则表达式

26、正则表达式

时间:2025-01-21 11:58:09浏览次数:3  
标签:字符 26 abc 匹配 示例 正则表达式 或子 字符串

目录

一. 匹配字符

.:匹配除换行符外的任意单个字符。

二. 位置锚点

^:匹配输入字符串的开始位置。

$:匹配输入字符串的结束位置。

\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,abc,匹配,示例,正则表达式,或子,字符串
From: https://blog.csdn.net/2402_87701017/article/details/145265865

相关文章

  • 国产板卡设计原理图:2226-基于JFM7K325T PCIeX8 四路光纤卡
    一、板卡概述     板卡主芯片采用JFM7K325TFPGA,pin_to_pin兼容FPGAXC7K410T-2FFG900,支持8-LanePCIe、64bitDDR3、四路SFP+连接器、四路SATA接口、内嵌16个高速串行收发器RocketIOGTX,软件具有windows驱动。    二、功能和技术指标: 板卡功能参......
  • P11269 【MX-S5-T3】IMAWANOKIWA (Construction ver.)
    P11269【MX-S5-T3】IMAWANOKIWA(Constructionver.)题目翻译:对一个初始长度为\(n\)的序列\(a\)进行操作,每次操作可以任选两个相邻的数\(a_j,a_{j+1}\)将这两个数删去,在加上\(popc(a_j+a_{j+1})\)\(popc(x)\),表示\(x\)在二进制下\(1\)的个数而我们要求出一个操......
  • 动态规划——26单词拆分
    这道题用代码随想录的解释有点牵强,第二层for循环和递推公式也没有说明白。代码classSolution{public:boolwordBreak(strings,vector<string>&wordDict){unordered_set<string>set(wordDict.begin(),wordDict.end());//字典单词是物品,s是背包......
  • JS宏进阶:正则表达式的使用
    正则表达式,对于任何一门编程语言来说,都是一种非常强大的工具,主要用于搜索、编辑或操作文本和数据。因此,在JS中,也存在相应的对象newRegExp(),在本章中,将详细介绍正则表达式在JS宏中的运用。一、正则表达式的创建在基础篇章中,曾提及正则表达式对象,在JS中有两种创建方法,示例如......
  • 2266. 统计打字方案数
    2266.统计打字方案数题目链接:2266.统计打字方案数代码如下:classSolution{public: intcountTexts(stringpressedKeys){ vector<longlong>f(pressedKeys.size()+1); f[0]=f[1]=1; for(inti=1;i<pressedKeys.size();i++){ f[i+1]=f......
  • CF 265B.Roadside Trees (Simplified Edition)(Java实现)
    题目分析    松鼠的起点在第一棵树的0位置,它的行动轨迹为到达顶端,吃坚果,到另一棵树的同位置,到达顶端,吃坚果。思路分析    根据题目分析,我们需要有一个不断更新的起始位置,单次循环内的时间=到达顶端的距离+吃坚果+跳跃=顶端-起始+1+1代码        ......
  • 【花雕学编程】Arduino动手做(246)---使用 Web 服务器的 ESP8266 LED 控制
    37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来——小小的......
  • ESP8266
    XCOSnTh平台的获取如下 XCOSnTh-MCU-Lib-CSDN博客https://blog.csdn.net/stars_A_B_C/article/details/145224971?spm=1001.2014.3001.5501https://blog.csdn.net/stars_A_B_C/article/details/145224971?spm=1001.2014.3001.5501https://blog.csdn.net/stars_A_B_C/article/......
  • NodeJS“学雷锋”志愿者管理系统-计算机毕设 附源码 39269
    NodeJS“学雷锋”志愿者管理系统目 录摘要1绪论1.1研究背景与意义1.2开发现状1.3论文结构与章节安排2 “学雷锋”志愿者管理系统系统分析2.1可行性分析2.1.1技术可行性分析2.1.2经济可行性分析2.1.3操作可行性分析2.2系统功能分析2.2.1功......
  • P1126 - 【提高】英文翻译 -
    难度:8+输入格式一个自然数n,0<=n<=2^31-1。输出格式输出这个数的英文,最后不要有多余的空格。输入数据11111111111输出数据1onebilliononehundredandelevenmilliononehundredandeleventhousandonehundredandeleven 代码:#include<iostream>#incl......