python中re模块关于findall函数的一些问题

Peter_Luoz 2018-01-28 04:57:09
import re

a = 'abc123abv23456'
b = re.findall('23(a)?', a)
print(b)
b = re.findall(r'23(?:a)?', a)
print(b)

结果
['a', '']
['23a', '23']

import  requests,re
url="http://money.163.com/special/pinglun/"
f=requests.get(url).text
req=re.compile("(?<=<div class=\"item_top\">).*?<a href=\"(.*?)\"*?</div>",flags=re.S)
m=req.findall(f)
for i in m:
print(i[1)

我的结果是:
t
t
t
t
t
t
t
t
t
t
t
t
t
t
t

之前看论坛中一个人说过findall语法中如果对pattern分组,那么查找出来的结果就会显示分组的结果,而不是显示整个pattern的匹配,但是在我自己做匹配的时候,我发现,出来是整个pattern的匹配,且无法调用分组的匹配信息,请问这是为什么?我的python版本是3.6的,是版本的问题吗?[quote][quote][/
...全文
604 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
sanGuo_uu 2018-01-29
  • 打赏
  • 举报
回复
看不懂你这个正则想匹配什么。 1,如果是findall不懂,你就把你的i整个打印出来看,然后选你要的 2,只要一个小括号不好吗,就像1#那样
「已注销」 2018-01-28
  • 打赏
  • 举报
回复

pattern=r'<div class="item_top">.*?<h2><a href="(.*?)">'
hrefs=re.findall(pattern,html,re.S)
for href in hrefs:
    print(href)

37,721

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧