我在html网页列表中查找带有正则表达式的这些网址,每个网页都有自己独特的网址,如下所示
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
re_search = '(http\:\/\/sfbay\.craigslist\.org\/search\/sfc\/apa\?(s\=\d+)?)'
searched_urls = re.findall(re_search, str(search_page_html))
searched_urls
它给出了这个结果,但我只想要每个元组的第一个结果。
('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'),
提前致谢!
答案 0 :(得分:2)
在正则表达式中,一对括号将捕获匹配。你有两对括号,因此在每个元组中有两个匹配。
(s\=\d+)
正在捕获''
,'s=100'
,'s=200'
和's=300'
。您可以通过将?:
添加到括号的开头,将该组更改为非捕获组,如下所示:
(?:s\=\d+)