C#正则如何只会一个()内的数据
(?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
请会点的能帮我解答一下吗?
------解决方案--------------------(?<=<a)前面是<a的数据,也就是<a后面跟着的数据
/1分组的意思
------解决方案--------------------
(?<=<div\s+class="c"\s+id="C_.+[^>]><a\s+href=".*">)(.*?)(?=</a>)
这样遍历匹配结果就行了。
另外,(?<=exp) 零宽度正回顾后发断言,它断言自身出现的位置的前面能匹配表达式exp
\1 是平衡组里的用法。
------解决方案--------------------(?<=exp)
零宽断言的一种,也叫零宽度正回顾后发断言,它断言自身出现的位置的前面能匹配表达式exp。比如(?<=\bre)\w+\b会匹配以re开头的单词的后半部分(除了re以外的部分),例如在查找reading a book时,它匹配ading。匹配exp后面的位置
\1则是一个反向引用,引用的正是捕获的第一组
具体参考http://manual.phpv.net/regular_expression.html