(?is)(<div.class=\"c\".id=\"C_.?[^>])(.+?)(</a>)
我试着写了这么一个正则。。反回的值都是
<div class="c" id="C_34502"><a href="/u/adfasdfas">-我爱小贝-</a>
<div class="c" id="C_34584"><a href="/u/adfa1511s">-我爱小贝-</a>
<div class="c" id="C_68492"><a href="/u/adfas465s">-我爱小贝-</a>
但是我只想要 -我爱小贝- 即第二个(.+?)里的内容,这个有办法吗?我想用修改正则我看到(?<=<a)
这个?<=是啥意思, 还有  \1请会点的能帮我解答一下吗?

解决方案 »

  1.   

    (?<=<a)前面是<a的数据,也就是<a后面跟着的数据
    /1分组的意思
      

  2.   

    (?<=<div\s+class="c"\s+id="C_.+[^>]><a\s+href=".*">)(.*?)(?=</a>)这样遍历匹配结果就行了。另外,(?<=exp) 零宽度正回顾后发断言,它断言自身出现的位置的前面能匹配表达式exp\1 是平衡组里的用法。
      

  3.   


    感觉还是有点问题,(?is)(?<=<div.class=\"c\".id=\"C_.?[^>]*><a\shref=")(.+?)(?=</a>)这样整过 以后不好整了 href后面的怎么整都会乱。。出现判断错误的情况。
      

  4.   

    好了。。(?is)(?<=<div.class=\"c\".id=\"C_.?[^>]*><a\shref="[^"]*">)(.+?)(?=</a>)
      

  5.   

    (?<=exp)
    零宽断言的一种,也叫零宽度正回顾后发断言,它断言自身出现的位置的前面能匹配表达式exp。比如(?<=\bre)\w+\b会匹配以re开头的单词的后半部分(除了re以外的部分),例如在查找reading a book时,它匹配ading。匹配exp后面的位置\1则是一个反向引用,引用的正是捕获的第一组
    具体参考http://manual.phpv.net/regular_expression.html