正则表达式是一种强大的文本处理工具,用于匹配、查找、替换等操作。C# 提供了对正则表达式的强大支持,这使得它在处理复杂的文本匹配和操作任务时非常有用。
正则表达式基础
什么是正则表达式?
正则表达式是一组特殊的字符,用来描述在搜索文本时如何匹配一系列字符串的模式。这些模式可以用于验证输入数据、搜索和替换文本中的特定内容等。
正则表达式的基本语法
字符匹配
.:匹配任何单个字符。a:匹配字母 'a'。[abc]:匹配括号内的任意一个字符,例如 "a", "b" 或 "c"。[^abc]:匹配不在括号内的任意一个字符。
量词
*:匹配前面的子表达式零次或多次。+:匹配前面的子表达式一次或多次。?:匹配前面的子表达式零次或一次。{n}:精确匹配 n 次。{n,}:至少匹配 n 次。{n,m}:匹配至少 n 次,但不超过 m 次。
锚点
^:匹配输入字符串的开始位置。$:匹配输入字符串的结束位置。
分组
():分组并捕获匹配的文本。
逻辑运算符
|:表示“或”关系,匹配两侧任一表达式。
C# 中的正则表达式类
Regex 类
System.Text.RegularExpressions 命名空间提供了 Regex 类,该类包含大量用于处理正则表达式的静态方法。
常见方法
Match:返回与正则表达式匹配的第一个匹配项。Matches:返回与正则表达式匹配的所有匹配项。Replace:返回将输入字符串中所有匹配项替换为指定字符串后的结果。Split:根据正则表达式拆分字符串。
示例代码
// www.javascriptcn.com code example
using System;
using System.Text.RegularExpressions;
class Program
{
static void Main()
{
string pattern = @"\d+"; // 匹配一个或多个数字
string input = "Hello World 123";
Match match = Regex.Match(input, pattern);
if (match.Success)
{
Console.WriteLine("第一个数字是: " + match.Value);
}
MatchCollection matches = Regex.Matches(input, pattern);
foreach (Match m in matches)
{
Console.WriteLine("找到数字: " + m.Value);
}
string replaced = Regex.Replace(input, pattern, "Number");
Console.WriteLine("替换后: " + replaced);
string[] splitResults = Regex.Split(input, @"\s+");
foreach (string s in splitResults)
{
Console.WriteLine(s);
}
}
}实际应用案例
验证电子邮件地址
// www.javascriptcn.com code example
string emailPattern = @"^[^@\s]+@[^@\s]+\.[^@\s]+$";
string emailInput = "test@example.com";
bool isValidEmail = Regex.IsMatch(emailInput, emailPattern);
if (isValidEmail)
{
Console.WriteLine("电子邮件地址有效!");
}
else
{
Console.WriteLine("电子邮件地址无效!");
}密码强度检查
// www.javascriptcn.com code example
string passwordPattern = @"^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$";
string passwordInput = "MyPassword123!";
bool isStrongPassword = Regex.IsMatch(passwordInput, passwordPattern);
if (isStrongPassword)
{
Console.WriteLine("密码强度符合要求!");
}
else
{
Console.WriteLine("密码强度不符合要求,请确保密码包含大写字母、小写字母、数字和特殊字符,并且长度至少为8个字符。");
}总结
正则表达式是一个强大的工具,用于处理各种文本相关的任务。通过学习基本语法和 C# 中的 Regex 类,你可以高效地进行文本匹配、替换和分割操作。希望本章的内容能够帮助你更好地理解和使用正则表达式。