正则表达式:在python中获取字符串和可选的额外字符串

2024-06-25 08:07:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我在html页面列表中寻找这些带有正则表达式的url,每个页面都有自己独特的url,如下所示

http://sfbay.craigslist.org/search/sfc/apa?
http://sfbay.craigslist.org/search/sfc/apa?s=100
http://sfbay.craigslist.org/search/sfc/apa?s=200
http://sfbay.craigslist.org/search/sfc/apa?s=300

我已经尝试了这个正则表达式,试图获取第一个url,以及具有一组字符串的以下url,而第一个url没有

re_search = '(http\:\/\/sfbay\.craigslist\.org\/search\/sfc\/apa\?(s\=\d+)?)'
searched_urls = re.findall(re_search, str(search_page_html))
searched_urls
  • 搜索页面是html页面的列表

它给出了这个结果,但我只想要每个元组的第一个结果

('http://sfbay.craigslist.org/search/sfc/apa?', ''),
('http://sfbay.craigslist.org/search/sfc/apa?s=100', 's=100'),
('http://sfbay.craigslist.org/search/sfc/apa?s=200', 's=200'),
('http://sfbay.craigslist.org/search/sfc/apa?s=300', 's=300'),

提前谢谢


Tags: 字符串orgrehttpurl列表searchhtml
1条回答
网友
1楼 · 发布于 2024-06-25 08:07:46

在正则表达式中,一对括号将捕获匹配项。您有两对括号,因此每个元组中有两个匹配项

(s\=\d+)

正在捕获'''s=100''s=200''s=300'。您可以将该组更改为非捕获组,方法是在括号的开头添加?:,如下所示:

(?:s\=\d+)

相关问题 更多 >