python2.7中正则匹配URL

qq_37972009 2017-12-06 04:26:48
请问python2.7中使用正则如何去匹配"/hello/world/?sys=name"
这个的地址,并取出前2个字段 "hello" "world" .
之前试了使用re.search re.findall() 都没成功。
...全文
210 4 打赏 收藏 举报
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
extend 2017-12-07
引用 3 楼 xpresslink 的回复:
[quote=引用 2 楼 extend 的回复:] 你的这个问题,最好使用split 正则的话: >>> string '/hello/world/?sys=name' >>> print(re.findall(r"/*(\w+)/+",string)) ['hello', 'world'] 但有个问题,hello和world中间那个"/",是没法重复匹配的,也就是说,匹配了”/hello/“,就不能匹配”/world/“,只能匹配”world/“。 所以正则里,第一个"/"用的是"*"模式,就是为了照顾后面的world。 至少我现在不知道其它方法,有大牛能搞定这个问题吗?
>>> re.findall('(?<=/)(\w+)(?=/)', '/hello/world/?sys=name') ['hello', 'world'][/quote]
  • 打赏
  • 举报
回复
混沌鳄鱼 2017-12-06
引用 2 楼 extend 的回复:
你的这个问题,最好使用split 正则的话: >>> string '/hello/world/?sys=name' >>> print(re.findall(r"/*(\w+)/+",string)) ['hello', 'world'] 但有个问题,hello和world中间那个"/",是没法重复匹配的,也就是说,匹配了”/hello/“,就不能匹配”/world/“,只能匹配”world/“。 所以正则里,第一个"/"用的是"*"模式,就是为了照顾后面的world。 至少我现在不知道其它方法,有大牛能搞定这个问题吗?
>>> re.findall('(?<=/)(\w+)(?=/)', '/hello/world/?sys=name') ['hello', 'world']
  • 打赏
  • 举报
回复
oyljerry 2017-12-06
简单的你需要找到对应的分隔符,直接字符串查找都可以找出来
  • 打赏
  • 举报
回复
extend 2017-12-06
你的这个问题,最好使用split 正则的话: >>> string '/hello/world/?sys=name' >>> print(re.findall(r"/*(\w+)/+",string)) ['hello', 'world'] 但有个问题,hello和world中间那个"/",是没法重复匹配的,也就是说,匹配了”/hello/“,就不能匹配”/world/“,只能匹配”world/“。 所以正则里,第一个"/"用的是"*"模式,就是为了照顾后面的world。 至少我现在不知道其它方法,有大牛能搞定这个问题吗?
  • 打赏
  • 举报
回复
相关推荐
发帖
脚本语言
加入

3.7w+

社区成员

JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • ITBOB • 鲍勃
申请成为版主
帖子事件
创建了帖子
2017-12-06 04:26
社区公告

CSDN 脚本语言社区接受专栏投稿(专栏会在顶部创建专属你的栏目),投稿需满足以下要求:

  • 脚本语言技术相关;
  • 文章持续更新,保持活跃;
  • 内容清晰明了,干货为主;
  • 文章排版有序,有条有理。

本社区开通招聘专栏,发布招聘信息请联系版主,发布者需要保证招聘信息真实有效,CSDN 平台和版主不对招聘内容负责!

联系方式:私聊版主、发送邮件、QQ联系等均可: