python 正则表达式中search和compile的区别

gmijie 2018-01-29 07:00:48
求助各位大神,先贴代码如下:
In [1]: import re

In [2]: pattern = "ab(cd)"

In [3]: string = "ababcdefds"

In [4]: result = re.search(pattern, string)

In [5]: print(result)
<_sre.SRE_Match object; span=(2, 6), match='abcd'>

In [6]: print(re.compile(pattern).findall(string))
['cd']


问题:
为什么pattern和string一样,但是匹配出来的结果不一样?
...全文
482 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
sanGuo_uu 2018-01-30
  • 打赏
  • 举报
回复
直接回答:这2个没关系,身高和体重能比较吗? compile是编译;search是搜索。 如果你问search、findall的区别,还稍微科学点(搜索:【python search findall】就可以了 )
Peter_Luoz 2018-01-30
  • 打赏
  • 举报
回复
我之前也犯过你这样的错误,其实很简单,因为findall的pattern如果分了组,就会输出组的内容,而不是输出整个pattern匹配的内容,你如果在再用一个括号,把整个pattern括起来,你就会得到一个tuple的list
oyljerry 2018-01-30
  • 打赏
  • 举报
回复
compile是编译正则表达式,这样以后可以重用这个pattern,提高效率 search就是从头开始按pattern进行查找
混沌鳄鱼 2018-01-29
  • 打赏
  • 举报
回复

print(result.group(1))

37,718

社区成员

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

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