当前位置: 首页 > news >正文

【C#】正则表达式

一、核心优势

用一小段规则搞定大量复杂的字符串匹配,查找和替换,并且可移植可复用。


使用正则表达式的好处:

1. 强大且灵活:可以一次性匹配非常复杂的规则,比如验证邮箱、提取特定的格式日志、解析URL;

2. 跨语言:

        支持的语言:Python、JavaScript、C#、Java、 PHP、Lua;

        支持的工具:grep、sed、Notepad++、VSCode;

3. 减少代码量:

        进行复杂的字符串处理时,可能需要几十行代码,正则表达式几行就能搞定;

4. 灵活替换与批量处理:

        能批量替换符合模式的文本,无需逐个字符串对比;结合分组引用,可以保留和重用匹配部分;

5. 可读性与可维护性:

        具有高度的可读性和可维护性,避免重复造轮子。

二、适用场景:

场景示例
数据验证检查邮箱、手机号、身份证号码、IP地址、URL是否合法
数据提取从JSON、HTML、日志中找到特定字段
批量替换替换文本文件中的格式
日志分析解析nginx/apache日志提取访问IP、请求时间
爬虫分析对爬虫的数据进行分析
IDE/文本编辑器查找替换实现大量重复代码的查找和替换

正则特别合适的场景是有明确模式的文本处理,可以大量减少代码量,提高效率。

三、正则表达式具体内容

1.基础匹配

符号功能示例匹配内容
abc精确匹配cat仅匹配“cat”
.任意单个字符c.t"cat",“cut”,但不匹配"ct"
[]匹配方括号中任意一个字符[abc]“a”,“b”,“c”
[^]

匹配不在方括号内字符

[^0-9]非数字字符

2. 预定义字符类

符号功能
\d数字,等同[0-9]
\D非数字,等同[^0-9]
\w单词字符
\W非单词字符
\s空白字符(例如空格、制表、换行)
\S非空白字符

3. 量词

符号功能
*0次或者多次
+一次或者多次
?0次或1次
{n}恰好n次,例如a{3}->“aaa”
{n,}至少n次,例如a{2,}->"aa"/"aaa"
{n,m}n到m次,例如a{2,4}->"aa"/'aaa"/"aaaa"

4. 边界与位置

符号功能
^行首才匹配,例如^abc->"abc"
$行尾才匹配,例如abc$->"xyzabc"
\b

单词边界,例如\bcat\b->可以匹配 "The cat sat on the mat." 中的 "cat"

但不匹配 "category" 中的 "cat"。

\B非单词边界

5. 分组与引用

符号功能
(abc)

        分组,整体作为一个单元

例子:(go)+ 可以匹配 "go", "gogo", "gogogo" 等。

捕获例子:(\d{4})-(\d{2})-(\d{2}) 可以匹配日期 "2025-08-12",并分别捕获年份、月份和日期。

6. 转义字符与特殊字符

符号功能
\转义特殊字符,使其变为普通字符
|

用于在两个或多个模式中选择一个。

例子:cat|dog 匹配 "cat" 或 "dog"。

http://www.dtcms.com/a/328151.html

相关文章:

  • Lyapunov与SAC算法的数学结构对比:从二次漂移到TD损失
  • 【KO】Android Framework
  • 串口超时参数深度解析:ReadTotalTimeoutMultiplier、ReadIntervalTimeout等
  • 熟悉并使用Spring框架 - 注解篇
  • JavaWeb从入门到精通!第二天!(Servlet)
  • Jenkins + SonarQube 从原理到实战三:SonarQube 打通 Windows AD(LDAP)认证与踩坑记录
  • 基于多模态大模型的个性化学习路径生成系统研究
  • 循环神经网络(RNN)全面解析
  • 运维学习Day22——Anisible自动化与基本使用
  • SpringBoot面试宝典
  • MySQL User表入门教程
  • Spyglass CDC rule
  • NLP—词向量转换评论学习项目分析
  • 28.分类算法:让机器学会分类
  • Tauri Qt孰优孰劣
  • ncurses 6.5 交叉编译移植到OpenHarmomy
  • 2025年渗透测试面试题总结-16(题目+回答)
  • Linux文件系统:从虚拟接口到物理实现的架构解析
  • 【C#】用队列构建一个对象池管理对象的创建和释放
  • NumPy 快速入门与实战教程(逐行拆解 + 专业扩展)
  • 详细了解sklearn中的CountVectorizer
  • 【c++深入系列】:万字详解模版(下)
  • [Robotics_py] 路径规划算法 | 启发式函数 | A*算法
  • MaxKB+合合信息TextIn:通过API实现PDF扫描件的文档审核
  • LRU算法与LFU算法
  • 农业智慧大屏系统 - Flask + Vue实现
  • 云计算分类与主流产品
  • iOS 文件管理全流程实战,从开发调试到数据迁移
  • 初识神经网络04——构建神经网络2
  • 软路由雷达:基于OpenWrt系统的传统逆向思路的冷门实现