C# 中的 Regex 类及其类方法是什么?

正文:

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 类以及正则表达式有基本的了解了。当然,正则表达式是一门十分深奥的技术,更多的细节和实际用例需要大家在实践中去了解和掌握。

后端开发标签