正文:
C# 中的 Regex 类及其类方法是什么?
正则表达式(Regular Expression,Regex)是一种通用的文本匹配和处理工具,在 C# 中,通过 Regex 类可以方便地使用正则表达式进行字符串匹配、替换等操作。
Regex 类的常见属性和方法
1. Regex.IsMatch(string input, string pattern)
该方法用于判断传入的字符串 input 是否符合指定的正则表达式 pattern。
例如,以下代码用于判断 "hello world" 是否以 "hello" 字符串开头:
string str = "hello world";
bool result = Regex.IsMatch(str, "^hello");
Console.WriteLine(result); // 输出 true
上述代码中,"^hello" 是一个正则表达式,"^" 表示字符串开头,"hello" 表示 "hello" 字符串。
IsMatch 方法还可以接受 RegexOptions 枚举类型的参数,用于指定匹配选项,例如:
string str = "HELLO world";
bool result = Regex.IsMatch(str, "hello", RegexOptions.IgnoreCase);
Console.WriteLine(result); // 输出 true
上述代码中,"hello" 与 "HELLO" 不完全匹配,但由于指定了 IgnoreCase 选项,所以仍返回 true。
2. Regex.Match(string input, string pattern)
该方法用于在指定的字符串 input 中,查找第一个符合指定正则表达式 pattern 的子串。
例如,以下代码用于在字符串 "12345" 中查找第一个连续的数字串:
string str = "12345";
Match match = Regex.Match(str, "\d+");
if (match.Success)
{
Console.WriteLine(match.Value); // 输出 12345
}
上述代码中,"\d+" 是一个正则表达式,"\d" 表示数字字符,"+" 表示一个或多个。
Match 方法同样可以接受 RegexOptions 枚举类型的参数,例如:
string str = "AaBbcabc";
Match match = Regex.Match(str, "abc", RegexOptions.IgnoreCase);
if (match.Success)
{
Console.WriteLine(match.Value); // 输出 abc
}
上述代码中,Ignorecase 选项指定了不区分大小写。
3. Regex.Matches(string input, string pattern)
该方法用于在指定的字符串 input 中,查找所有符合指定正则表达式 pattern 的子串。
例如,以下代码用于在字符串 "Hello world! My name is Tom. Tom is my name." 中查找所有出现过的人名:
string str = "Hello world! My name is Tom. Tom is my name.";
MatchCollection matches = Regex.Matches(str, @"\b[Tt]om\b");
foreach (Match match in matches)
{
Console.WriteLine(match.Value);
}
上述代码中,"\b[Tt]om\b" 是一个正则表达式,"\b" 表示单词边界,"[Tt]" 表示 "T" 或 "t","\b" 表示单词边界。
4. Regex.Replace(string input, string pattern, string replacement)
该方法用于将指定字符串 input 中符合指定正则表达式 pattern 的部分替换为指定字符串 replacement。
例如,以下代码用于将字符串 "Hello Tom,Tom. How are you, Tom?" 中的所有 "Tom" 替换为 "Jerry":
string str = "Hello Tom,Tom. How are you, Tom?";
string result = Regex.Replace(str, @"\b[Tt]om\b", "Jerry");
Console.WriteLine(result);
上述代码中,"\b[Tt]om\b" 是一个正则表达式,"\b" 表示单词边界,"[Tt]" 表示 "T" 或 "t"。
Replace 方法同样可以接受 RegexOptions 枚举类型的参数,例如:
string str = "HELLO Tom,Tom. How are you, Tom?";
string result = Regex.Replace(str, @"\b[Tt]om\b", "Jerry", RegexOptions.IgnoreCase);
Console.WriteLine(result);
上述代码中,"Tom" 与 "TOM" 不完全匹配,但由于指定了 IgnoreCase 选项,所以仍被替换成 "Jerry"。
5. Regex.Split(string input, string pattern)
该方法用于按照指定正则表达式 pattern 切分指定字符串 input,并返回结果数组。
例如,以下代码用于按照标点符号切分 "Hello, world! My name is Tom.":
string str = "Hello, world! My name is Tom.";
string[] result = Regex.Split(str, @"[\p{P}\p{S}\s]+");
foreach (string s in result)
{
Console.WriteLine(s);
}
上述代码中,@"[\p{P}\p{S}\s]+" 是一个正则表达式,"\" 用于转义,"\p{P}" 表示 Unicode 中所有的标点字符,"\p{S}" 表示 Unicode 中所有的符号字符,"\s" 表示空白字符。
Split 方法同样可以接受 RegexOptions 枚举类型的参数,例如:
string str = "HELLO, WORLD! My name is Tom.";
string[] result = Regex.Split(str, @"[\p{P}\p{S}\s]+", RegexOptions.IgnoreCase);
foreach (string s in result)
{
Console.WriteLine(s);
}
上述代码中,标点符号被忽略大小写。
6. Regex.Escape(string str)
该方法用于将指定字符串 str 中所有的正则表达式特殊字符进行转义。
例如,以下代码用于对字符串 "C:\\Program Files\\Microsoft Visual Studio\\2017\\Community\\" 进行转义:
string str = "C:\\Program Files\\Microsoft Visual Studio\\2017\\Community\\";
string result = Regex.Escape(str);
Console.WriteLine(result);
上述代码中,返回的字符串中所有的 "\" 会被转义,即变成 "\\"。
7. Regex.Unescape(string str)
该方法用于将指定字符串 str 中所有的转义字符还原成原始字符。
例如,以下代码用于对字符串 "C:\\\\Program Files\\\\Microsoft Visual Studio\\\\2017\\\\Community\\\\" 中的转义字符进行还原:
string str = "C:\\\\Program Files\\\\Microsoft Visual Studio\\\\2017\\\\Community\\\\";
string result = Regex.Unescape(str);
Console.WriteLine(result);
上述代码中,返回的字符串中所有的 "\\" 会被还原,即变成 "\"。
结语
通过上述常见属性和方法的介绍,相信大家已经能够对 C# 中的 Regex 类以及正则表达式有基本的了解了。当然,正则表达式是一门十分深奥的技术,更多的细节和实际用例需要大家在实践中去了解和掌握。