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

C#学习13——正则表达式

一、正则表达式

一种匹配输入文本的模式,是由特殊字符组成,用于匹配字符串中的字符组合。

二、正则表达式有哪些?

1.Regex 类(引入System.Text.RegularExpressions;)

Regex 类用于表示一个正则表达式。

1)Regex.Match(inputString, "pattern");    

返回第一个匹配项(即只找第一个)。

string input = "123abc456";
Match match = Regex.Match(input, @"\d+");if (match.Success)
{Console.WriteLine(match.Value); // 输出: 123
}

2)Regex.Matches(...)            

返回所有匹配项(全部找到)。

string input = "123abc456def789";
MatchCollection matches = Regex.Matches(input, @"\d+");foreach (Match match in matches)
{Console.WriteLine(match.Value); // 输出: 123, 456, 789
}

3)Regex.IsMatch(...)            

当你不需要具体匹配内容,只要知道是否“存在匹配”即可。

string input = "abc123xyz";
bool hasDigits = Regex.IsMatch(input, @"\d+");Console.WriteLine(hasDigits); // 输出: True

4)Regex.Replace(...)            

替换匹配到的内容为指定字符串。  

 eg1:

替换所有数字    Regex.Replace(text, @"\d+", "*")
 eg2:

string input = "电话:123-456-7890,邮箱:test@example.com";// 替换所有数字为 *
string result1 = Regex.Replace(input, @"\d", "*");
Console.WriteLine(result1);
// 输出:电话:***-***-****,邮箱:test@example.com// 替换所有邮箱地址为 [隐藏]
string result2 = Regex.Replace(input, @"\b[\w.-]+@[\w.-]+\.\w+\b", "[隐藏]");
Console.WriteLine(result2);
// 输出:电话:123-456-7890,邮箱:[隐藏]
5)Regex.Split(...)            

根据正则表达式匹配内容,将字符串分割成多个部分。

string input = "apple, banana; orange|grape";// 按照非单词字符(逗号、分号、竖线)进行分割
string[] parts = Regex.Split(input, @"[,\s;|]+");foreach (string part in parts)
{Console.WriteLine(part);
}
// 输出:
// apple
// banana
// orange
// grape

6.区别:
方法                    返回类型            是否返回匹配内容    是否修改原字符串    主要用途
Match(...)            Match                 ✅ 是(第一个)    ❌ 否            获取第一个匹配项
Matches(...)        MatchCollection ✅ 是(全部)        ❌ 否            获取所有匹配项
IsMatch(...)         bool                    ❌ 否                      ❌ 否            判断是否匹配成功
Replace(...)        string                  ❌ 否                       ✅ 是            替换匹配内容
Split(...)              string[]                ❌ 否                       ✅ 是            按匹配规则拆分字符串

http://www.xdnf.cn/news/1059931.html

相关文章:

  • 计算机网络学习笔记:TCP可靠传输实现、超时重传时间选择
  • leetcode 2294. 划分数组使最大差为 K 中等
  • Kernel K-means:让K-means在非线性空间“大显身手”
  • 机器学习×第十二卷:回归树与剪枝策略——她剪去多余的分支,只保留想靠近你的那一层
  • Arduino Nano 33 BLE Sense Rev 2开发板使用指南之【环境搭建 / 点灯】
  • 基于微信小程序和深度学习的宠物照片拍摄指导平台的设计与实现
  • 【AI编程】第3期,针对AI生成的改枪码列表创建对应的数据库表
  • 主成分分析(PCA)例题——给定协方差矩阵
  • 关于嵌入式编译工具链与游戏移植的学习
  • 【图论 DFS搜索树】P10298 [CCC 2024 S4] Painting Roads|普及+
  • threejs 实现720°全景图,;两种方式:环境贴图、CSS3DRenderer渲染
  • 问题排查之nginx请求日志
  • 火山引擎TTS使用体验
  • FPGA基础 -- Verilog 行为级建模之条件语句
  • 阿里云主机自动 HTTPS 证书部署踩坑实录
  • 自演进多智能体在医疗临床诊疗动态场景中的应用
  • 24.分页查询
  • 学习大模型---需要掌握的数学知识
  • FPGA基础 -- Verilog行为级建模之initial语句
  • 系统思考与核心竞争力
  • FPGA基础 -- Verilog行为建模之循环语句
  • Conda 常用命令大全:从入门到高效使用
  • 【学习笔记】2.2 Encoder-Decoder
  • 基于SVM和dbs的孤岛检测算法
  • 利用Java进行验证码的实现——算数验证码
  • C# 实现 gRPC高级通信框架简单实现
  • 稀疏大模型架构与训练算法研究
  • MongoDB学习记录(快速入门)
  • 7.索引库操作
  • 使用duckduckgo_search python api 进行免费且不限次数的搜索