C#正则表达式基础:匹配、替换与拆分实战
在C#开发中处理字符串时,常需识别特定格式的内容。正则表达式提供了一套描述这些规则的语法工具。本文将通过System.Text.RegularExpressions命名空间中的Regex类,演示如何构造表达式并利用其核心方法完成字符串的匹配判断、内容替换以及按规则拆分。
Regex类的构造与选项
使用正则表达式前需实例化Regex对象或调用静态方法。构造函数通常接受两个参数:
- 正则表达式字符串:定义匹配规则的核心部分,如字符集范围、重复次数等。
- RegexOptions枚举(可选):提供额外的匹配控制,常见选项包括:
- IgnoreCase:忽略大小写差异。
- Multiline:多行模式,使^和$匹配每一行的起止而非仅整个字符串边界。
- SingleLine:单行模式,使点号(.)能匹配包括换行符在内的所有字符。
- None:默认模式,无特殊修饰。
正则表达式的匹配
验证字符串是否符合特定模式是正则表达式的常见用途。Regex类提供了IsMatch静态方法,直接返回布尔值表示是否找到匹配项。
第1步:构建并测试电话号码匹配
目的:判断用户输入的字符串是否符合特定地区的电话号码格式。
操作说明:
- 引入System.Text.RegularExpressions命名空间。
- 定义正则表达式字符串,例如
(0530|0530-)\d{7,8},该规则匹配以"0530"或"0530-"开头,后接7到8位数字的组合。 - 使用
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"。
操作说明:
- 定义复杂的Email正则表达式:
\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*。 - 先通过IsMatch验证输入有效性。
- 若有效,调用
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步:按自定义模式拆分用户姓名字符串
目的:将包含多个姓名并以分号间隔的字符串分离为独立的姓名实体。
操作说明:
- 定义分割用的正则表达式,本例中使用简单的
;作为分隔符标记。 - 调用
Regex.Split(inputString, pattern)获取字符串数组。 - 遍历数组并处理每个元素。
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高级用法的资料请关注本站其它相关文章!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









