上一篇: C# 命名空间(Namespace)
下一篇: C# 异常处理
C# 正则表达式
在本教程中,我们将学习C#中正则表达式的基本概念及其应用。
- 正则表达式简介
System.Text.RegularExpressions
命名空间- 正则表达式基本语法
- 匹配和验证
- 捕获组和替换
正则表达式简介
正则表达式(Regular Expression)是一种描述字符模式的强大和灵活的工具。它们可以用于检查文本是否满足特定的模式(例如电子邮件地址),提取文本中的有用信息(例如 URL),或者替换和修改文本。
System.Text.RegularExpressions
命名空间
C# 提供了一个名为 System.Text.RegularExpressions
的命名空间,其中包含用于处理正则表达式的类。主要类有:
Regex
:表示正则表达式,并提供匹配、搜索和替换功能。Match
:表示单个正则表达式匹配的结果。Group
:表示捕获组内的匹配结果。Capture
:表示单次捕获的结果。
首先,需要引入该命名空间:
using System.Text.RegularExpressions;
正则表达式基本语法
正则表达式由一系列字符和操作符组成,用于描述要匹配的文本模式。以下是一些常用的正则表达式元素:
- 字面字符:例如
a
、1
或#
- 转义字符:以反斜杠(
\
)开始,表示特殊字符或动作,例如\d
表示数字字符 - 字符类:使用方括号(
[]
)定义,表示一个字符集合,例如[aeiou]
表示任意元音字符 - 量词:表示前面的元素重复的次数,例如
*
(零次或多次)、+
(一次或多次)或{n,m}
(至少 n 次,最多 m 次) - 锚定:表示字符串的开始(
^
)或结束($
) - 分组和捕获:使用圆括号(
()
)将若干元素组合在一起,并可以捕获匹配的子字符串
匹配和验证
要检查一个字符串是否与正则表达式匹配,可以使用 Regex.IsMatch()
方法。
string pattern = @"^\d{3}-\d{2}-\d{4}$"; string input = "123-45-6789"; bool isMatch = Regex.IsMatch(input, pattern); Console.WriteLine(isMatch); // 输出 "True"
捕获组和替换
正则表达式可以包含捕获组,这样可以在匹配时获取特定部分的内容。捕获组使用圆括号(()
)定义。
string pattern = @"(\d{4})-(\d{2})-(\d{2})"; string input = "2022-11-30"; Match match = Regex.Match(input, pattern); if (match.Success) { Console.WriteLine($"Year: {match.Groups[1].Value}"); Console.WriteLine($"Month: {match.Groups[2].Value}"); Console.WriteLine($"Day: {match.Groups[3].Value}"); }
要替换文本中与正则表达式匹配的部分,可以使用 Regex.Replace()
方法。还可以通过引用捕获组来生成新的替换文本。
string pattern = @"(\d{4})-(\d{2})-(\d{2})"; string input = "Today is 2022-11-30."; string replacement = "$3/$2/$1"; string result = Regex.Replace(input, pattern, replacement); Console.WriteLine(result); // 输出 "