C#正则表达式基础:匹配、替换与拆分实战

程一诺
程一诺
发布时间:2026-10-13 | 6人浏览过
原创

在C#开发中处理字符串时,常需识别特定格式的内容。正则表达式提供了一套描述这些规则的语法工具。本文将通过System.Text.RegularExpressions命名空间中的Regex类,演示如何构造表达式并利用其核心方法完成字符串的匹配判断、内容替换以及按规则拆分。

Regex类的构造与选项

使用正则表达式前需实例化Regex对象或调用静态方法。构造函数通常接受两个参数:

  1. 正则表达式字符串:定义匹配规则的核心部分,如字符集范围、重复次数等。
  2. RegexOptions枚举(可选):提供额外的匹配控制,常见选项包括:
  • IgnoreCase:忽略大小写差异。
  • Multiline:多行模式,使^和$匹配每一行的起止而非仅整个字符串边界。
  • SingleLine:单行模式,使点号(.)能匹配包括换行符在内的所有字符。
  • None:默认模式,无特殊修饰。

正则表达式的匹配

验证字符串是否符合特定模式是正则表达式的常见用途。Regex类提供了IsMatch静态方法,直接返回布尔值表示是否找到匹配项。

第1步:构建并测试电话号码匹配

目的:判断用户输入的字符串是否符合特定地区的电话号码格式。

操作说明:

  1. 引入System.Text.RegularExpressions命名空间。
  2. 定义正则表达式字符串,例如(0530|0530-)\d{7,8},该规则匹配以"0530"或"0530-"开头,后接7到8位数字的组合。
  3. 使用Regex.IsMatch(inputString, pattern)进行校验。
using System;
using System.Text.RegularExpressions;

class Program
{
    static void Main()
    {
        // 定义匹配规则:区号0530或0530-,后跟7或8位数字
        string pattern = @"(0530|0530-)\d{7,8}";
        Console.WriteLine("请输入一个电话号码");
        string tel = Console.ReadLine();

        // 执行匹配判断
        bool isValid = Regex.IsMatch(tel, pattern);
        if (isValid)
        {
            Console.WriteLine($"{tel} 是有效的某地电话号码");
        }
        else
        {
            Console.WriteLine($"{tel} 不是符合要求的电话号码");
        }
    }
}

输入0530-12345678时,程序将输出该号码符合要求;若输入格式不符则提示非有效号码。

正则表达式的替换

当需要查找特定模式并生成新字符串时,可使用Replace方法。该方法搜索目标字符串中所有匹配正则表达式的子串,并将其替换为指定内容。

第2步:利用正则验证并替换Email中的符号

目的:确保输入的是合法Email格式,并将其中的@符号替换为"AT"。

操作说明:

  1. 定义复杂的Email正则表达式:\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*。
  2. 先通过IsMatch验证输入有效性。
  3. 若有效,调用Regex.Replace(email, "@", "AT")执行替换。
using System;
using System.Text.RegularExpressions;

class Program
{
    static void Main()
    {
        // Email地址的正则表达式模式
        string emailPattern = @"\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*";
        Console.WriteLine("请输入一个Internet电子邮件地址");
        string email = Console.ReadLine();

        if (Regex.IsMatch(email, emailPattern))
        {
            // 将匹配的 "@" 替换为 "AT"
            string result = Regex.Replace(email, "@", "AT");
            Console.WriteLine($"替换后为:{result}");
        }
        else
        {
            Console.WriteLine("输入的字符串不符合Email格式");
        }
    }
}

输入123456@126.com经过程序处理后,输出结果为123456AT126.com。

正则表达式的拆分

Split方法允许根据正则表达式匹配的分隔符将长字符串切割成数组元素,这在解析日志文件或分隔列表时非常有用。

第3步:按自定义模式拆分用户姓名字符串

目的:将包含多个姓名并以分号间隔的字符串分离为独立的姓名实体。

操作说明:

  1. 定义分割用的正则表达式,本例中使用简单的;作为分隔符标记。
  2. 调用Regex.Split(inputString, pattern)获取字符串数组。
  3. 遍历数组并处理每个元素。
using System;
using System.Text.RegularExpressions;

class Program
{
    static void Main()
    {
        // 定义正则表达式用于分隔
        string delimiterPattern = @";";
        Console.WriteLine("请输入多个用户姓名,以分号隔开");
        string namesInput = Console.ReadLine();

        // 执行拆分操作
        string[] namesArray = Regex.Split(namesInput, delimiterPattern);

        Console.WriteLine("分隔后的姓名为:");
        foreach (string name in namesArray)
        {
            Console.WriteLine(name);
        }
    }
}

输入张三;李四;王五后,程序会将字符串按分号位置截断,依次输出张三、李四和王五。

以上就是C#中正则表达式基本应用的详细内容,更多关于C#字符串处理与Regex高级用法的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表