用这个表达式
 Regex reg = new Regex(@"<div((.(?![ ]id))*)>");
 其目的是想查找所有HIML源中所有不含有属性id的div,
例如对以下内容尝试匹配:
<div  id=”divtest”></div>
<div id=”divtest”></div>
<div asdflkid=”divtest”></div>
结果应该是返回以下1个匹配
<div asdflkid=”divtest”></div>
但却返回了以下2个匹配
<div id=”divtest”></div>
<div asdflkid=”divtest”></div>
观察原因是因为div与id间只有一个空格,如果多于一个空格才会被匹配到,这是什么原因呢?
如何修改以上表达式才能正确返回1个匹配?我尝试了一些方法不行,所以请大家在本机测试通过后才回复答案,谢谢!

解决方案 »

  1.   

    Regex reg=new Regex(@"<div(?!\s+id).*>");
      

  2.   

    <div name="divtest" id=”divtest”></div>
    这样会被误匹配出来,所以min_jie是否可以再修正一下?
    只要div中包含id即可,不一定要跟在div后的,只要是包含的都不要搜索出
      

  3.   

    Regex regex = new Regex(@"^<div\s+\w+(?=id).*</div>\s*$");
      

  4.   

    HDNGO你好!以下情况似乎抓不出来?
    <div ttt="asdf" aid=”divtest”></div>
      

  5.   


    o ..改改~~Regex regex = new Regex(@"^<div.+\w+(?=id).*</div>\s*$");
      

  6.   

    Regex reg=new Regex(@"<div((?!\bid\b).)*>");
      

  7.   

    HDNGO正解,明天加分,再次感谢!
      

  8.   

    也再次感谢min_jie的回复,感谢!
      

  9.   

    这样会更好一些:
    <div((?!\bid\s*=).)*>
      

  10.   

    min_jie的回复我刚刚测试过,很完美!
      

  11.   

    5楼的正则是必须出现id,只是不作为属性出现。因此类似<div abc="123"></div>这样的就匹配不到了。