循环遍历一些数据,我想捕获显示为页面 ID 的数字字符串(每行多个)。但是,我只想将数字字符串作为特定 URL 的一部分进行匹配,但我不想记录URL,只是数字。
URL 是相对的,具有可变长度的数字字符串,形式为
/view/123456.htm
Run Code Online (Sandbox Code Playgroud)
此处返回的数据将是“123456”
我目前正在使用 re.findall 来识别正确的 URL,然后使用 re.sub 来提取数字字符串。
views = re.findall(r"/view/\d*?.htm", line)
for view in views:
view = re.sub(r"/view/(\d+).htm", r"\1", view)
pagelist.append(view)
Run Code Online (Sandbox Code Playgroud)
有没有办法做类似的事情
views = re.findall(r"/view/(\d*?).htm", r"\1", line) #I know this doesn't work
Run Code Online (Sandbox Code Playgroud)
原始 findall() 在哪里只返回括号中的匹配部分?
re.findall() 可以只返回括号中正则表达式的一部分吗?
它不仅可以,而且可以:
>>> import re
>>> re.findall(r"/view/(\d*?).htm", "/view/123.htm /view/456.htm")
['123', '456']
Run Code Online (Sandbox Code Playgroud)
你没试过吗?文档也描述了它。