re.findall() 可以只返回括号中正则表达式的一部分吗?

Cla*_*rky 1 python regex

循环遍历一些数据,我想捕获显示为页面 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() 在哪里只返回括号中的匹配部分?

Ste*_*ann 5

re.findall() 可以只返回括号中正则表达式的一部分吗?

它不仅可以,而且可以

>>> import re
>>> re.findall(r"/view/(\d*?).htm", "/view/123.htm /view/456.htm")
['123', '456']
Run Code Online (Sandbox Code Playgroud)

你没试过吗?文档也描述了它。