re.findall только возвращает последний матч - PullRequest
0 голосов
/ 09 февраля 2020

У меня есть следующее HTML:

<tr>
<td style="text-align: left;" colspan="1">10:10</td>
<td style="text-align: left;" colspan="1">This is a description.</td>
</tr>
<tr>
<td colspan="1">10:30</td>
<td colspan="1">This is another description.</td>
</tr>

Я хочу вернуть несколько совпадений, каждое из которых состоит из двух групп: группа 1, которая является меткой времени, и группа 2, которая является описанием.

Когда я запускаю

re.findall(r'<td.*>(\d\d:\d\d)<\/td><td.*>(.*?)<\/td>', HTML)

Я получаю только последний матч:

[('10:30', 'This is another description.')]

Может кто-нибудь сказать мне, что не так с моим регулярным выражением?

1 Ответ

0 голосов
/ 09 февраля 2020

Ваш первый .* соответствует как можно большему числу символов, так что вы получите ровно одно совпадение - от первого <td до последнего </td>. Использование [^>]* вместо .* для первых двух будет соответствовать только тому, что находится внутри одного тега.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...