934926.jpg

韶华の

GF  2021-03-18 14:50
(仓鼠症重度患者;代下115磁力,50sp/G;更多看简介)

[全年龄正常向]python相关,正则表达式获取字符

下面的红色横线中的href可以用正则表达式来获取


par = re.findall(r'(?<=<h3> <a href=").*?(?=")', result)



现在想问下上面红色横线中的href如何获取?


此帖悬赏结束
最佳答案: 20 SP币
最佳答案获得者: 8bd36128

1322534.jpg

Sinon

B1F  2021-03-18 16:24
引用
引用第4楼8bd36128于2021-03-18 16:01发表的  :

那你前面加个</span>呢,一个前面是<h3>,另一个前面是</span>
我不清楚你这个悬赏的区分,未完结就会有个<span></span>显示悬赏金额吧,那你直接
re.findall(r'</span>(?:.*)<a href="([^"]+)',s) ,类似这样操作呗

为了防止贪婪匹配,改成re.findall(r'</span>(?:[^<]*)<a href="([^"]+)',s)或者re.findall(r'</span>(?:\s*)<a href="([^"]+)',s)更好一点
最佳答案奖励: (+20) SP币

1322534.jpg

Sinon

B2F  2021-03-18 15:15
你为什么不直接匹配read.php呢……比如这样re.findall(r'<a href="read.php\?([^"]+)',s),匹配出来再加上"read.php?"就行了。
另外BeautifulSoup好像能直接查href吧。
热心助人奖励: (+1) SP币

1322534.jpg

Sinon

B3F  2021-03-18 16:01
引用
引用第3楼d6cde0d6于2021-03-18 15:51发表的  :


这两个不一样,对应后面的href地址,一个是悬赏完结,一个是悬赏未完结,所以要分开来提取

那你前面加个</span>呢,一个前面是<h3>,另一个前面是</span>
我不清楚你这个悬赏的区分,未完结就会有个<span></span>显示悬赏金额吧,那你直接
re.findall(r'</span>(?:.*)<a href="([^"]+)',s) ,类似这样操作呗