看资料说,无视多行标志,匹配每行末尾(换行符前)。
可是我试了一下,只能匹配末尾啊。并不是每个换行符前,作用似乎和\z一样(小写z)。

解决方案 »

  1.   

    看下运行结果应该就差不多明白了
    不过说实在的,用正则两年了,还没用过这个元字符,基本上用不到List<Regex> list = new List<Regex>();
    list.Add(new Regex(@"$"));
    list.Add(new Regex(@"(?m)$"));
    list.Add(new Regex(@"\z"));
    list.Add(new Regex(@"\Z"));
    string[] test = new string[] { "abc", "abc\n", "abc\ndef", "abc\ndef\n" };
    foreach (string s in test)
    {
        foreach (Regex reg in list)
        {
            richTextBox2.Text += "源字符串: " + s + "\n正则表达式: " + reg.ToString() + "\n匹配位置: " + reg.Match(s).Index + "\n";
        }
        richTextBox2.Text += "\n---------------------------------\n";
    }
    //运行结果
    源字符串: abc
    正则表达式: $
    匹配位置: 3
    源字符串: abc
    正则表达式: (?m)$
    匹配位置: 3
    源字符串: abc
    正则表达式: \z
    匹配位置: 3
    源字符串: abc
    正则表达式: \Z
    匹配位置: 3---------------------------------
    源字符串: abc正则表达式: $
    匹配位置: 3
    源字符串: abc正则表达式: (?m)$
    匹配位置: 3
    源字符串: abc正则表达式: \z
    匹配位置: 4
    源字符串: abc正则表达式: \Z
    匹配位置: 3---------------------------------
    源字符串: abc
    def
    正则表达式: $
    匹配位置: 7
    源字符串: abc
    def
    正则表达式: (?m)$
    匹配位置: 3
    源字符串: abc
    def
    正则表达式: \z
    匹配位置: 7
    源字符串: abc
    def
    正则表达式: \Z
    匹配位置: 7---------------------------------
    源字符串: abc
    def正则表达式: $
    匹配位置: 7
    源字符串: abc
    def正则表达式: (?m)$
    匹配位置: 3
    源字符串: abc
    def正则表达式: \z
    匹配位置: 8
    源字符串: abc
    def正则表达式: \Z
    匹配位置: 7---------------------------------
      

  2.   

    格式看着不是很清楚,整理一下
    List<Regex> list = new List<Regex>();
    list.Add(new Regex(@"$"));
    list.Add(new Regex(@"(?m)$"));
    list.Add(new Regex(@"\z"));
    list.Add(new Regex(@"\Z"));
    string[] test = new string[] { "abc", "abc\n", "abc\ndef", "abc\ndef\n" };
    foreach (string s in test)
    {
        richTextBox2.Text += "源字符串: " + s + "\n";
        foreach (Regex reg in list)
        {
            richTextBox2.Text += "正则表达式: " + reg.ToString().PadRight(6, ' ') + "\t匹配位置: " + reg.Match(s).Index + "\n";
        }
        richTextBox2.Text += "\n---------------------------------\n";
    }
    //运行结果
    源字符串: abc
    正则表达式: $      匹配位置: 3
    正则表达式: (?m)$  匹配位置: 3
    正则表达式: \z     匹配位置: 3
    正则表达式: \Z     匹配位置: 3---------------------------------
    源字符串: abc正则表达式: $      匹配位置: 3
    正则表达式: (?m)$  匹配位置: 3
    正则表达式: \z     匹配位置: 4
    正则表达式: \Z     匹配位置: 3---------------------------------
    源字符串: abc
    def
    正则表达式: $      匹配位置: 7
    正则表达式: (?m)$  匹配位置: 3
    正则表达式: \z     匹配位置: 7
    正则表达式: \Z     匹配位置: 7---------------------------------
    源字符串: abc
    def正则表达式: $      匹配位置: 7
    正则表达式: (?m)$  匹配位置: 3
    正则表达式: \z     匹配位置: 8
    正则表达式: \Z     匹配位置: 7---------------------------------