比如:
<a 111 ...>111</a>
<a 222 ...>222</a>
<a 333 ...>333</a>...代表任意字符或空白字符
要求只返回最后一个<a 333 ...>333</a>.net语法正则表达式怎么写?谢谢。

解决方案 »

  1.   

    把这一串文本倒过来,网上找一段正则表达式(获取HTML元素的),有可能做相应修改(有的是取<><>,仔细点的会取<></>),而你的是>/<..><这种形式的。然后把取得的第一个匹配部分再倒过来。
      

  2.   

    使用Matches获得的MatchCollection的索引最大的那个
      

  3.   

    string test = @"abc...<a 111 ...>111 </a> 
    <a 222 ...>222 </a> 
    <a 333 ...>333 </a> 
    def...";
    Match m = Regex.Match(test, @"<a[^>]*>((?!</a>)[\s\S])*</a>", RegexOptions.RightToLeft|RegexOptions.IgnoreCase);
    if (m.Success)
    {
        richTextBox2.Text = m.Value;
    }以上代码虽然简洁且效率相对高点,但除非你对RegexOptions.RightToLeft的使用场景比较了解,否则不建议使用
    RegexOptions.RightToLeft在正则中本来就是一个奇怪的语法,使用不当,会得到无法预知的结果以下代码虽然效率相对低些,但是结果是可预知的,还是建议采用这种方式
    string test = @"abc...<a 111 ...>111 </a> 
    <a 222 ...>222 </a> 
    <a 333 ...>333 </a> 
    def...";
    Match m = Regex.Match(test, @"<a[^>]*>((?!</a>)[\s\S])*</a>(?=((?!</?a>)[\s\S])*$)", RegexOptions.IgnoreCase);
    if (m.Success)
    {
        richTextBox2.Text = m.Value;
    }
      

  4.   

    string str = @"<a 111 ...>111 </a> 
    <a 222 ...>222 </a> 
    <a 333 ...>333 </a> ";Regex r = new Regex("(?=<a )(.*?)(?<=</a>)");
    MatchCollection mc = r.Matches(str);所求=mc[mc.Count - 1].Value;