![]() | 1 crazybubble 2012-10-14 17:21:01 +08:00 ![]() |
![]() | 2 quzeyao OP @crazybubble tks 我试试 |
![]() | 3 quzeyao OP @crazybubble 没弄明白..。大神 我想匹配那行html之后把地址提取出来替换掉那行 该怎么写 |
![]() | 4 Mutoo 2012-10-14 17:51:33 +08:00 ![]() 第一个 .* 就会匹配所有的字符,这里应该使用“懒惰模式” .*? .*?href="(.*?)">(.*?)</a.* 匹配结果的$1和$2分别是<a>的 href 和 innerHTML |
![]() | 5 quzeyao OP @Mutoo 还不行 我寻思写个校网新闻的客户端 直接在yahoo pipe里写好正则 在客户端rss就行了 可是 怎么也不认啊 |
![]() | 6 quzeyao OP |
![]() | 7 crazybubble 2012-10-14 18:07:39 +08:00 ![]() |
![]() | 8 Mutoo 2012-10-14 18:09:07 +08:00 ![]() |
![]() | 9 quzeyao OP @crazybubble 恩 |
![]() | 10 crazybubble 2012-10-14 18:15:46 +08:00 ![]() @quzeyao 要匹配这个link,光用那个pattern不够,因为你是要匹配href=之后,</a之前的这个pattern(事实上,不是</a,因为</a之前还有那段中文的描述),那你需要的是两个零宽断言,也就是类似 如果在一个pattern前方找到了xxx,这个pattern后面找到了yyy,那么这串pattern是我想要的。 |
![]() | 12 crazybubble 2012-10-14 18:17:46 +08:00 @quzeyao 你可以试试 (?<=<\s*a\s+[^>]*href\s*=\s*["|'])[^"<>]+(?=["|']) 看是不是你想要的 |
![]() | 1 quzeyao OP @crazybubble 你是说我原来正则括号里的部分吧 |
![]() | 14 crazybubble 2012-10-14 18:24:59 +08:00 @quzeyao 不是不是 我说的是比如像这样 (<?<=你想要匹配的pattern之前会遇到的pattern)你要匹配的pattern(?=你要匹配的pattern的之后会遇到的pattern) |
![]() | 15 linuz 2012-10-14 18:29:41 +08:00 ![]() |
![]() | 16 crazybubble 2012-10-14 18:35:42 +08:00 @linuz 这个测试器貌似检测不出(?<=< 中第二个< 所以后来我找到了http://www.zhongguosou.com/computer_question_tools/test_regex.aspx 虽然看上去丑而且慢,但是还是挺管用的 |
![]() | 17 quzeyao OP |
18 caomu 2012-10-14 19:37:34 +08:00 ![]() 跪了。。。对着我以前做的pipes怎么改都提取不出来。。。 http://pipes.yahoo.com/pipes/pipe.info?_id=a209cc1bf63d3aabc0084eb89890be2c 都差不多都是提取标题和链接。。。pipes的正则很奇葩的,我就老是遇上各种奇葩的结果。。。 考虑到 fetch page 是准备废弃的模块,于是我还是用 Xpath fetch page 做了一个,LZ看看吧。(觉得还行就点一下“感谢回复者”吧~) http://pipes.yahoo.com/pipes/pipe.info?_id=fccad9f03362cf30740ea619cd3f0d66 |
![]() | 19 linuz 2012-10-14 19:40:44 +08:00 @crazybubble thx |
![]() | 21 xavierskip 2012-10-15 10:15:26 +08:00 http://regexpal.com/ 可以用这个方便调试 |