正则表达式在 .NET 框架中的应用
正则表达式是一种可以用来匹配输入文本的模式。.Net 框架提供了一个正则表达式引擎,允许进行这样的匹配。一个模式由一个或多个字符字面量、操作符或结构组成。
构造正则表达式的元素
有各种类型的字符、操作符和结构可以帮助你定义正则表达式。点击下面的链接找到这些构造:
Regex 类
Regex 类用于表示一个正则表达式。它有以下常用的方法:
序号 |
方法 & 描述 |
1 |
public bool IsMatch(string input) 指示是否在指定的输入字符串中找到了在 Regex 构造函数中指定的正则表达式的匹配项。 |
2 |
public bool IsMatch(string input, int startat) 指示是否在指定的输入字符串中找到了在 Regex 构造函数中指定的正则表达式的匹配项,从字符串中的指定起始位置开始。 |
3 |
public static bool IsMatch(string input, string pattern) 指示是否在指定的输入字符串中找到了指定的正则表达式的匹配项。 |
4 |
public MatchCollection Matches(string input) 在指定的输入字符串中搜索所有符合正则表达式的实例。 |
5 |
public string Replace(string input, string replacement) 在指定的输入字符串中,将所有符合正则表达式模式的字符串替换为指定的替换字符串。 |
6 |
public string[] Split(string input) 根据在 Regex 构造函数中指定的正则表达式模式,将输入字符串分割成子字符串数组。 |
对于完整的方法和属性列表,请参阅微软关于 C# 的文档。
示例 1
下面的示例匹配以 'S' 开头的单词:
using System;
using System.Text.RegularExpressions;
namespace RegExApplication {
class Program {
private static void showMatch(string text, string expr) {
Console.WriteLine("The Expression: " + expr);
MatchCollection mc = Regex.Matches(text, expr);
foreach (Match m in mc) {
Console.WriteLine(m);
}
}
static void Main(string[] args) {
string str = "A Thousand Splendid Suns";
Console.WriteLine("Matching words that start with 'S': ");
showMatch(str, @"\bS\S*");
Console.ReadKey();
}
}
}
当以上代码被编译和执行时,会产生如下结果:
Matching words that start with 'S':
The Expression: \bS\S*
Splendid
Suns
示例 2
下面的示例匹配以 'm' 开头并且以 'e' 结尾的单词:
using System;
using System.Text.RegularExpressions;
namespace RegExApplication {
class Program {
private static void showMatch(string text, string expr) {
Console.WriteLine("The Expression: " + expr);
MatchCollection mc = Regex.Matches(text, expr);
foreach (Match m in mc) {
Console.WriteLine(m);
}
}
static void Main(string[] args) {
string str = "make maze and manage to measure it";
Console.WriteLine("Matching words start with 'm' and ends with 'e':");
showMatch(str, @"\bm\S*e\b");
Console.ReadKey();
}
}
}
当以上代码被编译和执行时,会产生如下结果:
Matching words start with 'm' and ends with 'e':
The Expression: \bm\S*e\b
make
maze
manage
measure
示例 3
这个示例替换多余的空白:
using System;
using System.Text.RegularExpressions;
namespace RegExApplication {
class Program {
static void Main(string[] args) {
string input = "Hello World ";
string pattern = "\\s+";
string replacement = " ";
Regex rgx = new Regex(pattern);
string result = rgx.Replace(input, replacement);
Console.WriteLine("Original String: {0}", input);
Console.WriteLine("Replacement String: {0}", result);
Console.ReadKey();
}
}
}
当以上代码被编译和执行时,会产生如下结果:
Original String: Hello World
Replacement String: Hello World