正则表达式 string pattern = @"<a[^>]+>";
按我的理解,应该匹配的是尖括号内,以a开头的,中间不能包含">"的字符串。但实际结果却能匹配“<abc>>>d”,我的理解错再哪呢? 其中的+号重复的是哪部分的表达式?

解决方案 »

  1.   

    只要字符串有符合pattern的子字符串,那么就能匹配成功,如果你想要的效果是整个字符串以<a开头,>结尾
    应该是:string pattern = @"^<a[^>]+>$";
      

  2.   


    你确定你说的正确?void Main()
    {
    Console.WriteLine(Regex.Match("<abc>>>d","<a[^>]+>").Value);
    //<abc>
    }
      

  3.   


    //我觉得你指的可能是  贪婪匹配和懒惰匹配的区别:
    void Main()
    {
    Console.WriteLine(Regex.Match("<abc>>>d","<a.+>").Value);
    //<abc>>>
    Console.WriteLine(Regex.Match("<abc>>>d","<a.+?>").Value);
    //<abc>
    }
      

  4.   

    但实际结果却能匹配“<abc>>>d”<a[^>]+> 匹配到 <abc>这一部分
      

  5.   

    只匹配红色部分
    你用的应该是ismatch判断,只要字符串中包含匹配的一部分内容都会是true
      

  6.   

    如果是用来CHECK数据的:可以这样:string pattern = @"\b<a[^>]+>\b";
      

  7.   

    加到100分吧。
    +号匹配的是a[^>],还只是匹配[^>]?
      

  8.   

    嗯 我确实是用ismatch判断的。
      

  9.   

    + 只表示匹配 非> 字符 1到N次