求助正则表达式牛人帮忙解决一下

2014 年 8 月 21 日
 endoffight
<a href="http://news.hsw.cn/younews/">前一页</a>&nbsp;&nbsp;<a href="http://news.hsw.cn/system/more/25330000/0000/25330000_00000011.shtml">下一页</a>


<a href="http://news.hsw.cn/system/more/25330000/0000/25330000_00000012.shtml">下一页</a>


<a href="http://news.hsw.cn/system/more/25330000/0000/25330000_00000012.shtml">前一页</a>&nbsp;&nbsp;<a href="http://news.hsw.cn/system/more/25330000/0000/25330000_00000010.shtml">下一页</a>

需要匹配 下一页 的URL
我是用的正则如下
re.compile(r'(?<=[\n|&nbsp;&nbsp;])<a href="(http://news.hsw.cn/system/more/.*?)">下一页</a>')
但是取不到第三种情况的URL,匹配结果是

http://news.hsw.cn/system/more/25330000/0000/25330000_00000012.shtml">前一页</a>&nbsp;&nbsp;<a href="http://news.hsw.cn/system/more/25330000/0000/25330000_00000010.shtml

求指点!
4354 次点击
所在节点    Python
17 条回复
bindiry
2014 年 8 月 21 日
<a href="(http://news.hsw.cn/system/more/((?!<).)+)">下一页</a>

这样行不行?
Arrowing
2014 年 8 月 21 日
js简单的:
var s = '<a href="http://news.hsw.cn/system/more/25330000/0000/25330000_00000011.shtml">下一页</a>';

var r = /<a href="(.*)">下一页/;

s.match(r)[1];
alexapollo
2014 年 8 月 21 日
<a href="(http://news.hsw.cn/system/more/[^>]*?)">下一页</a>
endoffight
2014 年 8 月 21 日
@bindiry
@alexapollo

感谢啦

二位的都可以,思路都很好 感谢
endoffight
2014 年 8 月 21 日
@Arrowing 确实很简单
Vonex
2014 年 8 月 21 日
<a href="[^"]+">[^<]+</a>
csensix
2014 年 8 月 21 日
RewriteRule ^/(.*)$ %1/$1

大伙有空也帮忙解释一下这个正则,apache配置里面的,谢过。
imn1
2014 年 8 月 21 日
善用字符排除 [^不可能字符],不仅可以匹配更精确,还能加速正则
xylophone21
2014 年 8 月 21 日
@bindiry
@alexapollo
的答案都破不了这种情况:
<a href="http://news.hsw.cn/system/more/25330000/0000/25330000_00000010.shtml">\n
下 一 页 < / a >

即">下一页</a>"
这几个字符中都可能插入回车,甚至空格都不影响实际使用.
正则之前把回车空格神马的都去掉吧.

另外,你确定前面的a标签url都是news.hw.cn开头的?确定不会有别的属性?
CosWind
2014 年 8 月 21 日
@csensix http://stackoverflow.com/questions/6654834/difference-between-1-vs-1-in-htaccess
貌似要结合RewriteCond 看。Apache的官方文档应该是不错的参考资料。。
CosWind
2014 年 8 月 21 日
CosWind
2014 年 8 月 21 日
@endoffight 正则是贪心的,这样肯定匹配的比较多吧。
CosWind
2014 年 8 月 21 日
/"([^"]*)">\s*下\s*一\s*页/这样可以么
diaoleona
2014 年 8 月 21 日
为何不用xpath
endoffight
2014 年 8 月 24 日
@diaoleona 你确定Xpath能解决吗?
WKPlus
2014 年 8 月 28 日
虽然你加了?,表示非贪心的匹配方式,但是误解了贪心的意思,第三行还是会匹配到。

13楼说的不错,把.*?改为[^\"]*就可以了。

其实你都用python了,干嘛不用BeautifulSoup?用正则解析html吃力不讨好啊
endoffight
2014 年 8 月 30 日
@WKPlus 当时追求快,懒得安装bs😁

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://v2ex.xtra.eu.org/t/129098

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX