用断言修改正则表达式-vpython入门
8.4 用断言修改正则表达式 C#语言包含一系列可以添加给正则表达式的运算符。这些运算符可以在不导致正则表达式引擎遍历字符串的情 况下改变表达式的行为。这些运算符被称为断言。 第一个要研究的断言会导致正则表达式只能在字符串或行的开始处找到匹配。这个断言由脱字符号(^)产生。 在下面这段程序中,正则表达式只与第一个字符为字母“h”的字符串相匹配,而忽略掉字符串中其他位置上的“h”。 代码如下所示: using System; using System.Text.RegularExpressions; class chapter8 { static void Main() { string[] words = new string[] { "heal", "heel", "noah", "techno" }; string regExp = "^h"; Match aMatch; foreach (string word in words) if (Regex.IsMatch(word, regExp)) { aMatch = Regex.Match(word, regExp); Console.WriteLine("Matched: " + word + " at position: " + aMatch.Index); } } } 这段代码的输出就只有字符串“heal”和“heel”匹配。 这里还有一个断言会导致正则表达式只在行的末尾找到匹配。这个断言就是美元符号($)。如果把前一个正则 表达式修改成如下形式: string regExp = "h$"; 那么“noah”就是唯一能找到的匹配。 此外,另有一个断言可以在正则表达式中式指定所有匹配只能发生在单词的边缘。这就意味着匹配只能发生在 用空格分隔的单词的开始或结束处。此断言用\b 表示。下面是此断言的工作过程: string words = "hark, what doth thou say, Harold? ";