Сводка
Я создал регулярное выражение, которое будет извлекать несколько различных данных из HTML-страницы. Он использует сгруппированные альтернативы в группе без захвата. Это работает очень хорошо, чтобы получить необходимые данные;тем не менее, группы не объединяются в как можно меньшее количество совпадений тестер
Пока я его кодировал, я думал, что совпадения и группы показались немного странными с онлайн-тестером регулярных выражений, но это было до тех пор, пока я его не получилработая в python, я заметил проблему с иерархией групп.
Похоже, мои единственные решения: ...
- Переписать регулярное выражение, чтобы в каждом совпадении было 5 сопоставленных групп
- Напишите код на языке Python, чтобы сгладить структуру данных.
- Что-то еще ???
Номер 1, представленный выше, был бы лучше из идей. Я не хочу «загрязнять» свою кодовую базу ненужным кодом
Код
Regex
^.*(?:<p.*>(.*)|<span>(.*)<\/span>|<a href=\"(.*linux(?:\.tar\.gz|.zip))\">(.*)</a>.*\((.*) bytes\))
Детская площадка https://regex101.com/r/MC8TOv/1/
Веб-сайт https://android -dot-devsite-v2-prod.appspot.com / studio / archive_25350a46834ddb86754aba2445ff1359aa7fd8cb296923255092494ac94ef531.frame *1035***
Python
При использовании BeautifulSoup
import re
...
regex = r"^.*(?:<p.*>(.*)|<span>(.*)<\/span>|<a href=\"(.*linux(?:.tar.gz|.zip))\">(?P<filename>.*)</a>.*\((.*) bytes\))"
match = re.findall(regex, str(soup_html), re.M)
print(match)
Ожидания
Что я получаю Это какой-то общийвывод, который я получаю.
[
('A1', '', '', '', ''),
('', 'B1', '', '', ''),
('', '', 'C1', 'D1', 'E1'),
('A2', '', '', '', ''),
('', 'B2', '', '', ''),
('', '', 'C2', 'D2', 'E2'),
...
]
Что я хочу
[
('A1', 'B1', 'C1', 'D1', 'E1'),
('A2', 'B2', 'C2', 'D2', 'E2')
...
]
Опять же, есть ли способ переписать регулярное выражение, чтобы в каждом совпадении было 5 сопоставленных групп?