2015-02-15 2 views
0

Ищу эти адреса с регулярным выражением в списке HTML-страницах, каждая страница со своими уникальными URL показано нижерегулярного выражения: получить строку и необязательную дополнительную строку в Python

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, а также следующие ссылки, которые имеют набор строк первый не

re_search = '(http\:\/\/sfbay\.craigslist\.org\/search\/sfc\/apa\?(s\=\d+)?)' 
searched_urls = re.findall(re_search, str(search_page_html)) 
searched_urls 
  • search_page_html, список страниц 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'), 

Заранее благодарен!

ответ

2

В регулярном выражении пара скобок зафиксирует совпадение. У вас две пары круглых скобок и, следовательно, два совпадения в каждом кортеже.

(s\=\d+) 

получающего '', 's=100', 's=200' и 's=300'. Вы можете изменить эту группу в , не захвата группы путем добавления ?: к началу скобки, например:

(?:s\=\d+) 
+0

Спасибо! Именно то, что я искал –

Смежные вопросы