.NET中如何使用正则表达式进行文本匹配

来源:这里教程网 时间:2026-02-21 17:29:28 作者:

在.NET中使用正则表达式进行文本匹配非常常见,主要通过 System.Text.RegularExpressions 命名空间中的 Regex 类来实现。它提供了灵活且强大的方式来查找、替换、分割和验证字符串内容。

引入命名空间

使用正则表达式前,先引入命名空间:

using System.Text.RegularExpressions;

基本匹配操作

使用 Regex.IsMatch 方法判断字符串是否符合某个模式:

string input = "联系邮箱是 example@email.com";
string pattern = @"[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}";
bool isMatch = Regex.IsMatch(input, pattern);
Console.WriteLine(isMatch); // 输出: True

这个例子检测输入文本中是否包含一个符合邮箱格式的字符串。

提取匹配内容

使用 Regex.MatchRegex.Matches 获取实际匹配的文本:

Match match = Regex.Match(input, pattern);
if (match.Success)
{
   Console.WriteLine("找到邮箱: " + match.Value);
}

如果要找多个匹配项,用 Matches

MatchCollection matches = Regex.Matches(input, pattern);
foreach (Match m in matches)
{
   Console.WriteLine("匹配: " + m.Value);
}

替换匹配内容

使用 Regex.Replace 替换符合条件的文本:

string result = Regex.Replace(input, pattern, "[邮箱已隐藏]");
Console.WriteLine(result); // 输出: 联系邮箱是 [邮箱已隐藏]

也可以使用委托动态生成替换内容:

string result = Regex.Replace(input, pattern, m => m.Value.ToUpper());

常见正则表达式示例

手机号(中国大陆): ^1[3-9]\d{9}$ 数字: \d+ 中文字符: [\u4e00-\u9fa5]+ URL: https?://[^\s]+

性能建议

如果同一个正则表达式会被多次使用,建议创建 Regex 实例并设置 RegexOptions.Compiled 提升性能:

static readonly Regex EmailRegex = new Regex(
   @"[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}",
   RegexOptions.Compiled | RegexOptions.IgnoreCase);

这样可以在程序启动时编译正则表达式,提高重复调用的效率。

基本上就这些。.NET 的正则功能强大,配合在线调试工具测试模式,能快速解决大多数文本处理问题。

相关推荐