这里面的
?<=
?=
是什么意思呢

解决方案 »

  1.   

    一个是边界前断言 一个边界后断言 都是边界断言  意思就是说匹配的部分前面一定是<td>后面也一定是</td> 才去匹配它
      

  2.   

    (?<=    断言要匹配的文本的前缀
    (?=exp) 匹配exp前面的位置 
    (?<=exp) 匹配exp后面的位置 
    (?<=exp)也叫零宽度正回顾后发断言,它断言自身出现的位置的前面能匹配表达式exp。看看过客的博客 
      

  3.   


    ? <= 表示此处之前的字符必须符合等号后的表达式
    ?=表示此处之后的字符必须符合等号后的表达式
    譬如 
    a(?=bb)
    表明在a后必须是bb,不过bb不在返回的匹配字符串之中.
      

  4.   


    呵呵,感谢推荐楼主的正则是取<td>和</td>之间的内容,但是楼主给的正则的局限性比较大如果是
    <td id="test">one line.
    another line.</td>
    这样的<td...>中带属性,内容带换行的就不行了
    或者是同时有多个td标签,“.*”贪婪模式可能会取到不希望的结果可以这样写正则
    (?is)(?<=<td[^>]*>)(?:(?!</?td\b).)*(?=</td>)至于解释,有时间可以看下我的博客,不过多是基础语法的解释,需要综合起来理解
      

  5.   


     (exp) 匹配exp,并捕获文本到自动命名的组里 
    (?<name>exp) 匹配exp,并捕获文本到名称为name的组里,也可以写成(?'name'exp) 
    (?:exp) 匹配exp,不捕获匹配的文本,也不给此分组分配组号 
     (?=exp) 匹配exp前面的位置 
    (?<=exp) 匹配exp后面的位置 
    (?!exp) 匹配后面跟的不是exp的位置 
    (?<!exp) 匹配前面不是exp的位置 
    (?#comment) 这种类型的分组不对正则表达式的处理产生任何影响,用于提供注释让人阅读