C#正则表达式总结

news2024/11/26 22:40:13

推荐一个专门用于编写正则表达式的网站:

regex101: build, test, and debug regex

参考文档:

https://zh.wikipedia.org/wiki/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F

特殊字符的意义:

^ : 表示字符串的开头

例子: "abc"用"^a"匹配可以匹配出"a",而”bac"用^a匹配,则无法匹配成功。

$ : 表示字符串的结尾

例子:“abc"用”c$"匹配可以匹配出"c",而“acb"用“c$”匹配,则无法匹配成功。

+:表示匹配前面的字符1个~无限个(贪婪模式下会尽可能匹配多个字符,如果要用非贪婪模式,则要用”+?“)

例子:“abbc"用”ab+"匹配可以匹配出"abb"。“aabc"用“ab+”匹配可以匹配出"ab"。而”acc"用“ab+”匹配,则无法匹配成功。

*:表示匹配前面的字符0个~无限个(贪婪模式下会尽可能匹配多个字符,如果要用非贪婪模式,则要用”+?“)

例子:“abbc"用”ab*"匹配可以匹配出"abb"。“aabc"用“ab*”匹配可以匹配出"ab"。而”acc"用“ab*”匹配,可以匹配出“a"。

?:表示匹配前面的字符0个或者1个

例子:“abc"用”ab?"匹配可以匹配出"ab"。“ac"用“ab?”匹配可以匹配出"a"。

{2,4}:表示匹配前面的字符2个到4个,而{2,}则表示2个到无穷个

例子:”abbbb“用"b{2,3}"匹配可以匹配出”abbb“, "ab"用"b{2,3}"匹配,则无法匹配成功|

| : 表示“或”的意思

例子1:”ac“用"a|b"匹配可以匹配出”a“, ”bc“用"a|b"匹配可以匹配出”b“,而“cd”用"a|b"匹配,则无法匹配成功

例子2:”dabcd“用"abc|qwe"匹配可以匹配出”abc“,

例子3:”abcwe“用"ab(c|q)we"匹配可以匹配出”abcwe“,

[abc]:表示只要是中括号内的字符都可以匹配到,

[a-zA-Z0-9],则表示匹配大小写字母以及数字字符

例子:"abc"用[b]匹配,可以匹配出”b",”abc"用[bc]匹配,则可以匹配出"b“和”c"

[^abc]:则表示除开中括号内的字符都可以匹配到

例子:"abc"用[^b]匹配,可以匹配出”a"和“c”,”abc"用[^bc]匹配,则可以匹配出"a“

\ :反斜杠,转义字符

. :匹配所有字符

例子:"abc"用 . 匹配,可以匹配出”a"和“b“和“c”

\w:匹配字母、数字和下划线

\W:匹配除开字母、数字和下划线的所有字符

例子:"a&1_"用 \w 匹配,可以匹配出”a"和“1“和“_”,"a&1_"用 \W 匹配,可以匹配出”&"

\d:匹配数字字符

\D:匹配数字以外的字符

例子:"a&1_"用 \d 匹配,可以匹配出“1“,"a&1_"用 \D 匹配,可以匹配出"a"和”&"和”_"

\s:匹配空格和换行

\S:匹配除开空格和换行以外的字符

例子:"a c"用 \s 匹配,可以匹配出“ “,"a c"用 \S 匹配,可以匹配出"a"和”c"

群组(Group):

():用小括号括起来表示一个group,这样方便我们对字符串内的某些子串进行提取

例子:“ab_11"用”(([a-z]+)_(\d+))“进行匹配,group1就是“ab_11”, group2就是”ab“,group3就是”11“

代码:

using System;
using System.Text.RegularExpressions;

public class Example
{
    public static void Main()
    {
        string pattern = @"(([a-z]+)_(\d+))";
        string input = @"ab_11";
        RegexOptions options = RegexOptions.Multiline;
        
        foreach (Match m in Regex.Matches(input, pattern, options))
        {
            Console.WriteLine("'{0}' found at index {1}.", m.Value, m.Index);
        }
    }
}

害羞群组(shy group):

(?:  ) : 在小括号里的前端加入?:,则当前这个小括号匹配到的内容不会加入到群组中

例子:

例子:“ab_11"用”((?:[a-z]+)_(\d+))“进行匹配,group1就是“ab_11”,group2就是”11“,可以发现“ab”已经不在群组里了。

代码:

using System;
using System.Text.RegularExpressions;

public class Example
{
    public static void Main()
    {
        string pattern = @"((?:[a-z]+)_(\d+))";
        string input = @"ab_11";
        RegexOptions options = RegexOptions.Multiline;
        
        foreach (Match m in Regex.Matches(input, pattern, options))
        {
            Console.WriteLine("'{0}' found at index {1}.", m.Value, m.Index);
        }
    }
}

反向引用 (Backreferences):

\1 : 表示匹配group1的值(匹配的时候用\1,当使用regex.Replace的时候,\1要改成$1)

例子:“abc=def,abc=abc,def=abc,def=def”用“(abc|def)=\1”匹配,则会匹配到"abc=abc"和"def=def"。这里的\1就是群组1(group1)的值

左右合样(Lookaround):

右肯定合样:

例子:“ab”用“a(?=b)”匹配可以匹配到"a","ac"用"a(?=b)",则无法匹配成功

("a(?=b)"表示a后面一定要是b,但是b并不会被加到匹配结果里面)

右否定合样:

例子:“ac”用“a(?!b)”匹配可以匹配到"a","ab"用"a(?=b)",则无法匹配成功

("a(?!b)"表示a后面一定不能是b)

左肯定合样:

例子:“ab”用“(?<=a)b”匹配可以匹配到"b","cb"用"(?<=a)b",则无法匹配成功

("(?<=a)b"表示b前面一定要是a,但是a并不会被加到匹配结果里面)

左否定合样:

例子:“cb”用“(?<!a)b”匹配可以匹配到"b","ab"用"(?<!a)b",则无法匹配成功

("(?<!a)b"表示b前面一定不能是a)

贪婪模式和非贪婪模式:

 例子:

"aaabab"用"a.*b"匹配会匹配到”aaabab"。(尽可能多的匹配)

"aaabab"用"a.*?b"匹配会匹配到“aaab”。(尽可能少的匹配)

推荐一个视频:

深入浅出正则表达式_哔哩哔哩_bilibili

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

局域网的网络硬件主要包括有什么

一、网络服务器 是计算机局域网的核心部件。 网络操作系统是在网络服务器上运行的&#xff0c;网络服务器的效率直接影响整个网络的效率。 因此&#xff0c;一般要用高档计算机或专用服务器计算机作为网络服务器。 二、网络工作站 网络工作站是通过网络接口卡连接到网络上的…

银行软件测试:基于互联网金融平台的测试框架设计与分析

目前互联网金融火的一塌糊涂&#xff0c;基于互联网金融平台的自动化测试的项目也是如火如荼的进行。笔者手头上负责一个p2p项目的测试框架开发&#xff0c;因此如何设计一套有效的测试框架也成为工作所需和互相交流测试经验的必须。进入》软件测试社群学习交流 这个网站的后台…

科研绘图配色方案

科研绘图配色方案 在撰写论文的时候&#xff0c;美观&#xff0c;大气&#xff0c;上档次的图表能够很好地给自己的论文加分。但是在绘制图表的时候往往会面临色彩搭配的问题&#xff0c;选择合适的色彩搭配能够有效地展示自己的方法&#xff0c;但是色彩搭配选择不当的话往往…

Go学习之路:并发(DAY 3)

文章目录前引并发1、Go协程/简单创建2.1、信道/简单创建信道2.2、信道/限制了大小的信道2.3、信道/range close信道3.1、Select语句前引 听了会歌 一看了下今天已经下午2&#xff1a;50了 我们学校也好像开始放学生们回家了 那今天最后就愉快愉快的把我们的 A Tour Of Go 最后…

申报高新技术企业需要哪些条件?

高新技术企业是在国家重点支持的高新技术领域中持续进行科研开发和技术成果转化&#xff0c;形成企业核心自主知识产权&#xff0c;并以此为基础开展生产经营活动的企业。成为高新技术企业以后会减免40%的所得税。 申报高新技术企业需要哪些条件&#xff1f; 第一点&#xff…

回收站不见了怎么恢复?一招把回收站的图标找回来!

有时我们会有这样的烦恼&#xff0c;明明回收站里面的东西还没被删除或者是还在回收站里面&#xff0c;但是回收站的图标就是看不到了。其实&#xff0c;这正是我们所说的电脑回收站不显示图标导致。因为我们关闭回收站位置以后&#xff0c;电脑系统都会自动把回收站置为“已删…

TPM零知识学习四 —— tpm2-tss源码安装

tpm2-tss包的的安装方法参考&#xff1a; tpm2-tss/INSTALL.md at master tpm2-software/tpm2-tss GitHub 1. 源码下载 $ git clone https://github.com/tpm2-software/tpm2-tss.git 下载完成后&#xff0c;源码内容如下所示&#xff1a; $ ls afl-fuzzing CHANGELOG.m…

基于ssm的小区物业管理系统

项目描述 临近学期结束&#xff0c;还是毕业设计&#xff0c;你还在做java程序网络编程&#xff0c;期末作业&#xff0c;老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下&#xff0c;你想解决的问…

mac下安装nodejs跟vscode

1.打开官网 Node.js 2.点击下载 3.下载完成&#xff0c;根据提示下一步安装&#xff0c;安装完成后&#xff0c;在vscode中新建一个js文件&#xff0c;执行node test.js

[附源码]计算机毕业设计ssm新能源电动汽车充电桩服务APPSpringboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

opencv c++ 图像噪声及去噪

1、噪声类型及生成 1.1、类型 高斯噪声、椒盐噪声、泊松噪声、乘性噪声&#xff0c;等。 具体解释参考&#xff1a;(31条消息) 图像噪声简介_yeler082的博客-CSDN博客_图像噪声 高斯噪声 泊松噪声 乘性噪声 …

AWS SAP-C02 考试指南

Hello大家好&#xff0c;欢迎来到AWS解决方案架构师professional中文视频培训课程&#xff0c;我是讲师沉默恶魔。 本课时的内容是SAP-C02考试指南&#xff0c;我将介绍有关SAP-C02考试的详细信息。 SAP-C02是解决方案架构师专业级认证的最新版本的考试&#xff0c;目前也只能…

空域图像增强-图像滤波处理

3.图像滤波处理。自选一张图片&#xff0c;完成以下图像处理&#xff1a;①给图像分别添加随机噪声和椒盐噪声&#xff1b;②采用不同的平滑滤波模板进行滤波对比&#xff08;不同模板、不同尺寸&#xff09;&#xff1b;③采用中值滤波对图像进行滤波对比&#xff1b;④对添加…

GEE开发之Modis_NPP数据分析和获取

GEE开发之Modis_NPP数据分析和获取1.NPP2.MOD系列和MYD系列区别3.MOD17A3H_v006(500m/1年)4.MOD17A3HGF_v006(500m/1年)5.MOD17A3HGF_v061(500m/1年)6.MYD17A3H_v006(500m/1年)6.1 MYD17A3H下的指数6.2 遥感影像查看7.MYD17A3HGF_v061(500m/1年)8.MYD17A3HGF_v006(500m/1年)9.N…

行业应用之无限可能,就在亚马逊云科技re:Invent

在2022亚马逊云科技re:Invent全球大会Adam Selipsky“如何借助云的力量&#xff0c;在未知领域抓住机遇并茁壮成长”的主题演讲中&#xff0c;除了阐述主要的产品升级以外&#xff0c;亚马逊云科技还致力于打造面向特定行业或者特定应用场景的解决方案&#xff0c;以帮助客户快…

【Mongoose应用和文件上传】一.Express框架访问MongDB数据库;二.node实现文件上传

目录 一.Express框架访问MongDB数据库 1.目的&#xff1a; &#xff08;1&#xff09;mongoose模块的使用 &#xff08;2&#xff09;学会代码的封装&#xff1a;dao层、service层、接口层 &#xff08;3&#xff09;MVC设计思想&#xff1a;M&#xff08;Model&#xff0…

5.RabbitMQ高级特性

5.RabbitMQ高级特性 为什么不是RabbitMQ的事务&#xff1f; 这是从官网直接翻译过来的&#xff1a;网络可能以不太明显的方式出现故障&#xff0c;而且检测某些故障需要时间。因此&#xff0c;向套接字编写协议帧或一组帧(例如发布的消息)的客户端不能假定消息已经到达服务器…

【库存控制】基于蜜蜂算法优化库存控制附matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;修心和技术同步精进&#xff0c;matlab项目合作可私信。 &#x1f34e;个人主页&#xff1a;Matlab科研工作室 &#x1f34a;个人信条&#xff1a;格物致知。 更多Matlab仿真内容点击&#x1f447; 智能优化算法 …

如何将dwg文件转成kml文件

第一步&#xff1a; 在CAD中将DWG另存为 DXF&#xff0c;如下&#xff1a; 注意&#xff1a;&#xff08;中文乱码&#xff09;为了打开的中文不出现乱码&#xff0c;保存DXF文件请选择如下的选项 第二步&#xff1a; 下载安装Bigemap GIS Office download.bigemap.com/bmset…

12.01 M4-UART-IT实验

1.使用CORTEX-M4核&#xff0c;实验中断实验和串口实验结合--->上传到CSDN 按键触发时&#xff0c;LED灯状态取反&#xff0c;并且在串口工具打印一句话 KEY1按键按下&#xff0c;LED1状态取反&#xff0c;串口工具打印key1 down!!!! 主要代码gpio.c void HAL_GPI…