正则表达式

正则表达式是一种可以和输入文本相匹配的表达式。.Net framework 提供了一个正则表达式引擎让这种匹配成为可能。一个表达式可以由一个或多个字符,运算符,或结构体组成。

构建正则表达式的定义

有很多种类的字符,运算符,结构体可以定义正则表达式。

  • 转义字符
  • 字符类
  • 集合
  • 分组构造
  • 限定符
  • 回溯引用构造
  • 可替换结构
  • 替换
  • 混合结构

Regex 正则表达式类

Regex 类用于表示一个正则表达式。它有下列常用的方法:

Sr.No 方法
1 public bool IsMatch(string input)
指出输入的字符串中是否含有特定的正则表达式。
2 public bool IsMatch(string input, int startat)
指出输入的字符串中是否含有特定的正则表达式,该函数的 startat 变量指出了字符串开始查找的位置。
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)
将一个输入字符拆分成一组子字符串,从一个由正则表达式指出的位置上开始。

有关属性和方法的完成列表,请参见微软的 C# 文档。

示例 1

下列的例子中找出了以 s 开头的单词:

  1. using System;
  2. using System.Text.RegularExpressions;
  3. namespace RegExApplication
  4. {
  5. class Program
  6. {
  7. private static void showMatch(string text, string expr)
  8. {
  9. Console.WriteLine("The Expression: " + expr);
  10. MatchCollection mc = Regex.Matches(text, expr);
  11. foreach (Match m in mc)
  12. {
  13. Console.WriteLine(m);
  14. }
  15. }
  16. static void Main(string[] args)
  17. {
  18. string str = "A Thousand Splendid Suns";
  19. Console.WriteLine("Matching words that start with 'S': ");
  20. showMatch(str, @"\bS\S*");
  21. Console.ReadKey();
  22. }
  23. }
  24. }

编译执行上述代码,得到如下结果:

  1. Matching words that start with 'S':
  2. The Expression: \bS\S*
  3. Splendid
  4. Suns

示例 2

下面的例子中找出了以 m 开头以 e 结尾的单词

  1. using System;
  2. using System.Text.RegularExpressions;
  3. namespace RegExApplication
  4. {
  5. class Program
  6. {
  7. private static void showMatch(string text, string expr)
  8. {
  9. Console.WriteLine("The Expression: " + expr);
  10. MatchCollection mc = Regex.Matches(text, expr);
  11. foreach (Match m in mc)
  12. {
  13. Console.WriteLine(m);
  14. }
  15. }
  16. static void Main(string[] args)
  17. {
  18. string str = "make maze and manage to measure it";
  19. Console.WriteLine("Matching words start with 'm' and ends with 'e':");
  20. showMatch(str, @"\bm\S*e\b");
  21. Console.ReadKey();
  22. }
  23. }
  24. }

编译执行上述代码,得到如下结果:

  1. Matching words start with 'm' and ends with 'e':
  2. The Expression: \bm\S*e\b
  3. make
  4. maze
  5. manage
  6. measure

示例 3

这个例子替换了额外的空白符:

  1. using System;
  2. using System.Text.RegularExpressions;
  3. namespace RegExApplication
  4. {
  5. class Program
  6. {
  7. static void Main(string[] args)
  8. {
  9. string input = "Hello World ";
  10. string pattern = "\\s+";
  11. string replacement = " ";
  12. Regex rgx = new Regex(pattern);
  13. string result = rgx.Replace(input, replacement);
  14. Console.WriteLine("Original String: {0}", input);
  15. Console.WriteLine("Replacement String: {0}", result);
  16. Console.ReadKey();
  17. }
  18. }
  19. }

编译执行上述代码,得到如下结果:

  1. Original String: Hello World
  2. Replacement String: Hello World