关于 Python re 正则的一个请教

2019-09-04 20:58:13 +08:00
 siriussilen

打扰了,我现在憋在一个正则上面已经好久啦…

https://www.douban.com/people/50583134/

我想用正则提取出 people 后面的,50583134

我在这里卡住了,网上也没有相关的材料。请大家不吝赐教 谢谢!

1721 次点击
所在节点    Python
10 条回复
GTX765
2019-09-04 21:10:44 +08:00
re.find(r ‘ people/(.*?)/‘, string)试试 (妈的 iPhone 自带输入法的标点真操蛋)
siriussilen
2019-09-04 21:14:25 +08:00
@GTX765 感谢!!!!
Dustyposa
2019-09-04 21:19:14 +08:00
re.search("\d+").group()
delectate
2019-09-05 07:44:40 +08:00
C:\Users\Delectate>python
Python 3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:59:51) [MSC v.1914 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import re
>>> str="https://www.douban.com/people/50583134/"
>>> re.findall("\d+", str)
['50583134']
>>>
imlinhanchao
2019-09-05 09:05:06 +08:00
完全可以不用正則吧,鏈接的格式是固定的,就直接用切片就行了:url[-9:-1]
locoz
2019-09-05 11:22:11 +08:00
这种很规则的东西,直接 split 会更方便,比如:
>>> a = "https://www.douban.com/people/50583134/"
>>> a.split("/")
['https:', '', 'www.douban.com', 'people', '50583134', '']
>>> a.split("/")[4]
'50583134'
octalempyrean
2019-09-05 11:32:05 +08:00
你就爬吧
xiaohanxxx
2019-09-05 15:57:39 +08:00
''.join(re.findall(r'\d+',string))
jxie0755
2019-09-06 01:42:20 +08:00
这个格式如此的固定, 我觉得好像连正则都可以不用. 用字符串的方法就应该能解决.
第一个回答 re.find(r ‘ people/(.*?)/‘, string) 就可以, 但是我会把(.*?)换成(\d*?)这样更精确?
ClericPy
2019-09-06 10:58:36 +08:00
"https?://www\.douban\.com/people/(\d+)/.*"

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/598001

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX