返回首页 C# 入门手册

C# 基础篇

C# 高级篇

正则表达式

正则表达式是一种可以和输入文本相匹配的表达式。.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 开头的单词:

    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
上一篇: 预处理指令 下一篇: 异常处理