C# 正则表达式

  • 正则表达式

    正则表达式是可以针对一个输入文本相匹配的模式。.Net框架提供了允许此类匹配的正则表达式引擎。模式由一个或多个字符文字,运算符或构造组成。
  • Regex 类

    Regex 类用于表示正则表达式。它具有以下常用方法-
    方法 说明
    public bool IsMatch(string input) 指示在Regex构造函数中指定的正则表达式是否在指定的输入字符串中找到匹配项。
    public bool IsMatch(string input, int startat) 指示在Regex构造函数中指定的正则表达式是否在指定的输入字符串中找到从字符串中指定的起始位置开始的匹配项。
    public static bool IsMatch(string input, string pattern) 指示指定的正则表达式是否在指定的输入字符串中找到匹配项。
    public MatchCollection Matches(string input) 在指定的输入字符串中搜索所有出现的正则表达式。
    public string Replace(string input, string replacement) 在指定的输入字符串中,将与正则表达式模式匹配的所有字符串替换为指定的替换字符串。
    public string[] Split(string input) 在Regex构造函数中指定的正则表达式模式所定义的位置,将输入字符串拆分为子字符串数组。
    有关方法和属性的完整列表,请阅读有关C# 的Microsoft文档。
    例子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