python正则表达式的问题

去开原 发布于 2013/10/17 09:28
阅读 583
收藏 0

<divclass="lib-cat"><h3>分类索引</h3><divclass="list"><ul><li><ahref="/search/movie">电影</a></li><li><ahref="/search/tv">电视剧</a></li><li><ahref="/search/show">综艺</a></li></ul></div>


想匹配出 电影,电视剧,综艺的链接,形成一个数组

加载中
0
crifan
crifan

道理的解释,完整的代码和输出,以及个人的建议,全都写在帖子里了:

【问题解答】建议:处理html时复杂的需求,建议使用专门的库比如BeautifulSoup去处理而不要用正则

去开原
去开原
回复 @crifan : 哥们,我要是熟悉就是你问我了
crifan
crifan
回复 @去开原 : 全部解释清楚了,我才可能帮你写出,你所希望得到的,所谓正确的正则。否则,我不是神仙,没法猜测是你的所有的需求的细节的。
crifan
crifan
回复 @去开原 : 换句话说:如果要我给你一次性写出,你所理解的,对的,正确的正则,那么要你:不仅要给出你此处的这么几行的html,而且还给出完整的html内容,并且还要和我说清楚,其中的内容,可能出现的变化,比如某个div和li之间,可能出现还会0或多个空格,甚至是换行,等等诸如此类的解释
crifan
crifan
回复 @去开原 : 那说明:你还是对于正则不熟悉:写正确之前,自己要清楚你所处理的内容是什么样的,以及可能的变化,然后再去写对应的正则,能够处理到对应的可能变化的内容。
去开原
去开原
博客里面最后的那个正则还是有问题的,在全文中如果有在别的<div>中的类似规则标签也会取到,所以还是不对
下一页
0
万里谁能驯
万里谁能驯
<divclass="lib-cat"><h3>分类索引</h3><divclass="list"& gt;<ul><li><ahref="(.*?)">电影</a></li& gt;<li><ahref="(.*?)">电视剧</a></li><li& gt;<ahref="(.*?)">综艺</a></li></ul>< /div>

然后调用   正则表达式.findall(字符串)
或者          正则表达式.search(字符串).groups()
去开原
去开原
这个思路可以的,但是我想根据<a>标签进行通配匹配,在匹配后得到3个a标签的list,这个怎么写啊
0
逍龍
逍龍
為啥不用beautifulsoup
0
万里谁能驯
万里谁能驯
<divclass="lib-cat"><h3>分类索引</h3><divclass="list"& amp; gt;<ul><li>(<ahref=".*?">电影</a>)</li& gt;<li>(<ahref=".*?">电视剧</a>)</li><li& gt;(<ahref=".*?">综艺</a>)</li></ul>< /div>

想要匹配哪一部分,就把那部分用括号框住,其中确定的文本不需要进行改动,不确定的文本用正则去表示就行了。
上面的网址想精确点可以写成/\w+/\w+,电影、电视剧、综艺可以写成.*?或者.{2,3}。对于一般的的文本,几乎怎样匹配都不会有错,除非有人想为难你。
去开原
去开原
问题是如果a标签数目不定怎么办,这么做正则表达式也没意义了吧
0
万里谁能驯
万里谁能驯
这3个链接的规则是一样的:
<ahref="/search/movie">电影</a>
<ahref="/search/tv">电视剧</a>
<ahref="/search/show">综艺</a>

对于这样的文本,就把其中一样的保留,不一样的用正则表示。
<ahref="/search/*?">.*?</a>
0
crifan
crifan

参见我前面的回复:

要么你把所有的你的要求的详细的解释,说清楚 -> 我再帮你写出精确的正则;

要么是你自己去学习正则,搞懂正则 -> 靠自己写出你自己想要的正则


关于正则的特殊性,详见:

【整理】关于提问者在问别人关于正则表达式方面的问题之前所要明白的事情和前提

crifan
crifan
回复 @去开原 : 和是否爱写博客无关,和有热情和能力分享技术有关。
去开原
去开原
你是有多么爱写博客啊...
返回顶部
顶部