2015-11-12 4 views
0

Я искал этот форум для близкого совпадения с моей проблемой, но не смог найти подходящее решение, поэтому отправляю запрос.Python regex: Fetch next line after string match

Использование модулей urllib и re для извлечения определенных разделов веб-страницы. Представляет интерес также статус, связанный с этими разделами.

Например, глядя на источник страницы:

MY-TEXT # 1410 закончил подзадачи ГОТОВИШЬ-WORKSPACE # 340418: https://cloud6.foo.bar.com/b/job/ ГОТОВИТЬ-WORKSPACE/340418

«> УСПЕХ

Am использованием re.compile и re.findall для извлечения текста приходит после того, как этот шаблон "https://cloud6.foo"; это соответствует всему тексту и, используя этот список, я подтвердил, что это так; но я теряю статус этой конкретной задачи, потому что она находится в строке сразу после строки «https: //».

Как извлечь одну строку после согласованной строки в текущем сценарии?

Фрагмент кода здесь:

from urllib import urlopen 
import re 

webpage = urlopen(urllink).read() 
buildPhases = re.compile(r'\<a href=\W{1}https\W{3}(.*)') 
phaseLists = re.findall(buildPhases, webpage) 
for item in phaseLists: 
    print item 
+3

Если вы разбираете HTML, * использовать HTML-парсер * – jonrsharpe

+1

Для расширения jonrsharpes ком! , попробуйте BeautifulSoup. – durrrutti

+1

Как указано в комментариях выше, используйте html-парсер для выполнения этой работы (в противном случае [tony the pony приходит для вас] (http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml- автономные теги) .Если вы отредактируете вопрос, содержащий html-код (или ссылку), с которым имеете дело, мы можем предоставить соответствующее решение (BeautifulSoup или lxml). –

ответ

0

Чтобы извлечь строку после совпадающей строки вам нужно добавить .*\n в вас Regex.
Например, если мы возьмем:

MY-TEXT # 1410 закончил подзадачи ГОТОВИШЬ-WORKSPACE # 340418: https://cloud6.foo.bar.com/b/job/PREPARE-WORKSPACE/340418

«> УСПЕХ

и применить этот шаблон r'https.*\n.*\n.*' результат должен быть выше строка без :

MY-TEXT #1410 finished subtask PREPARE-WORKSPACE #340418:

+0

Спасибо всем, кто ответил. могли использовать HTML-парсеры, но из-за ограничения недоступности модуля, возвращаемого в регулярное выражение. – Ramu