下面这个例子
 class Program
  {
  static void Main(string[] args)
  {   
  string pattern = @"\b\w+es\b";
  Regex rgx = new Regex(pattern);
  string sentence = "Who writes these notes?";
  foreach (Match match in rgx.Matches(sentence))
  {
  Console.WriteLine("{0}--{1}", match.Value, match.Index);
  }
  Console.ReadKey();
  }
  }搜索以es结尾的,最后的输出结果是:
writes--4
notes--17我的问题是:
notes后面不是有一个问号吗?既然有?符号,怎么能说是以es结尾的呢?
谢谢!!

解决方案 »

  1.   

    “\b”匹配的只是一个位置,这个位置的一侧是构成单词的字符,另一侧为非单词字符、字符串的开始或结束位置。notes? 中es是属于单词notes的,而“?”则不属于构成单词的字符,所以“\b”匹配的就是“s”和“?”中间的位置其实在单词后面是“?”也好,是空格也好,什么都没有也好,总之它不是构成单词的字符,也就符合单词边界的条件了,你把“?”换成空格是否能理解,道理其实是一样的参考
    正则基础之——\b 单词边界