如何:使用正则表达式搜索字符串(C# 编程指南)
可以使用 Regex 类搜索字符串。 这些搜索有的非常简单,有的复杂到需要完全使用正则表达式。 以下是使用 Regex 类搜索字符串的两个示例。 有关更多信息,请参见.NET Framework 正则表达式。
示例
以下代码是一个控制台应用程序,用于对数组中的字符串执行简单的不区分大小写的搜索。 给定要搜索的字符串和包含搜索模式的字符串后,静态方法 Regex.IsMatch 将执行搜索。 在本例中,使用第三个参数指示忽略大小写。 有关更多信息,请参见RegexOptions。
class TestRegularExpressions
{
static void Main()
{
string[] sentences =
{
"C# code",
"Chapter 2: Writing Code",
"Unicode",
"no match here"
};
string sPattern = "code";
foreach (string s in sentences)
{
System.Console.Write("{0,24}", s);
if (System.Text.RegularExpressions.Regex.IsMatch(s, sPattern, System.Text.RegularExpressions.RegexOptions.IgnoreCase))
{
System.Console.WriteLine(" (match for '{0}' found)", sPattern);
}
else
{
System.Console.WriteLine();
}
}
// Keep the console window open in debug mode.
System.Console.WriteLine("Press any key to exit.");
System.Console.ReadKey();
}
}
/* Output:
C# code (match for 'code' found)
Chapter 2: Writing Code (match for 'code' found)
Unicode (match for 'code' found)
no match here
*/
以下代码是一个控制台应用程序,此程序使用正则表达式验证数组中每个字符串的格式。 验证要求每个字符串具有电话号码的形式,即用短划线将数字分成三组,前两组各包含三个数字,第三组包含四个数字。 这是使用正则表达式 ^\\d{3}-\\d{3}-\\d{4}$ 完成的。 有关更多信息,请参见正则表达式语言 - 快速参考。
class TestRegularExpressionValidation
{
static void Main()
{
string[] numbers =
{
"123-555-0190",
"444-234-22450",
"690-555-0178",
"146-893-232",
"146-555-0122",
"4007-555-0111",
"407-555-0111",
"407-2-5555",
};
string sPattern = "^\\d{3}-\\d{3}-\\d{4}$";
foreach (string s in numbers)
{
System.Console.Write("{0,14}", s);
if (System.Text.RegularExpressions.Regex.IsMatch(s, sPattern))
{
System.Console.WriteLine(" - valid");
}
else
{
System.Console.WriteLine(" - invalid");
}
}
// Keep the console window open in debug mode.
System.Console.WriteLine("Press any key to exit.");
System.Console.ReadKey();
}
}
/* Output:
123-555-0190 - valid
444-234-22450 - invalid
690-555-0178 - valid
146-893-232 - invalid
146-555-0122 - valid
4007-555-0111 - invalid
407-555-0111 - valid
407-2-5555 - invalid
*/