当前位置: 首页 > 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.lryc.cn/news/618170.html

相关文章:

  • 计算机视觉(4)-相机基础知识恶补
  • 计算机网络2-3:传输方式
  • 集合,完整扩展
  • AWS EKS 常用命令大全:从基础管理到高级运维
  • 面试八股之从Java到JVM层面深入解析ReentrantLock实现原理
  • c++的四种类型转换(static_cast,reinterpret_cast,const_cast,dynamic_cast)详解和代码示例
  • 【R语言数据分析开发指南】
  • C++学习之数据结构:AVL树
  • 干货分享|如何从0到1掌握R语言数据分析
  • Rust:构造函数 new() 如何进行错误处理?
  • Vue.js 响应接口:深度解析与实践指南
  • 《Auracast广播音频技术解析及未来路线图》 —蓝牙技术联盟 市场拓展经理 吴志豪 技术与市场经理 鲁公羽
  • 基于 Easy Rules 的电商订单智能决策系统:构建可扩展的业务规则引擎实践
  • 电商双 11 美妆数据分析总结
  • CTO如何通过录音转写和音频降噪,提升企业远程协作效率?
  • 数据分析与可视化
  • 阿里巴巴开源多模态大模型-Qwen-VL系列论文精读(一)
  • Spring Cloud系列—Config配置中心
  • B树索引和B+树索引有什么区别?
  • TinyVue表格重构性能优化详解
  • 从基础编辑器到智能中枢:OpenStation 为 VSCode 注入大模型动力
  • 人工智能+虚拟仿真,助推医学检查技术理论与实践结合
  • MySQL 索引:索引为什么使用 B+树?(详解B树、B+树)
  • 零知开源——基于STM32F407VET6和INA219的功率监测器设计与实现
  • ZKmall开源商城的容灾之道:多地域部署与故障切换如何守护电商系统
  • 【新启航】从人工偏差到机械精度:旋转治具让三维扫描重构数据重复精度提升至 ±0.01mm
  • 解决 HTTP 请求 RequestBody 只能被读取一次的问题
  • 医美产业科技成果展陈中心:连接微观肌肤世界与前沿科技的桥梁
  • 【机器学习】什么是DNN / MLP(全连接深度神经网络, Deep Neural Network / Multilayer Perceptron)?
  • 01. maven的下载与配置