Как извлечь определенный текст в регулярное выражение Python - PullRequest
0 голосов
/ 29 апреля 2019

У меня есть 3 строки HTML-кода здесь: Я хочу извлечь выделенные области, каждый из цветов в группе.

<TD STYLE="border-bottom>2,000,000</TD><TD STYLE="padding-bottom: 4pt; text-align: left">&nbsp;</TD><TD STYLE="padding-bottom: 4pt">&nbsp;</TD>
<TD STYLE="text-align: left">&nbsp;</TD><TD STYLE="text-align: right">1,333,000</TD><TD STYLE="text-align: left">&nbsp;</TD><TD>&nbsp;</TD>
<TD COLSPAN="2">&nbsp;</TD><TD>&nbsp;</TD></TR>

Я пытался:

(?<=</TD>)<TD.*>(&nbsp;<)/TD>

соответствует только задней части, но не соответствует первой.

Это то, что я ожидал: ![hightlighted Values in groups

Я получаю эти выделенные значения в списке:

1-й строки:

<TD STYLE="padding-bottom: 4pt; text-align: left">&nbsp;</TD>
<TD STYLE="padding-bottom: 4pt">&nbsp;</TD>

из 2-й строки:

<TD STYLE="text-align: left">&nbsp;</TD>
<TD STYLE="text-align: left">&nbsp;</TD>
<TD>&nbsp;</TD>

3-й строки:

<TD COLSPAN="2">&nbsp;</TD>
<TD>&nbsp;</TD>

В конце концов:

['<TD STYLE="padding-bottom: 4pt; text-align: left">&nbsp;</TD>','<TD STYLE="padding-bottom: 4pt">&nbsp;</TD>','<TD STYLE="text-align: left">&nbsp;</TD>','<TD STYLE="text-align: left">&nbsp;</TD>','<TD>&nbsp;</TD>','<TD COLSPAN="2">&nbsp;</TD>','<TD>&nbsp;</TD>']

1 Ответ

0 голосов
/ 29 апреля 2019

Это должно работать:

<[\w\":;\-= ]*>[^\d]*?</TD>

Демо

Чтобы получить список, вы можете сделать это:

import re
pattern = r"(<[\w\":;\-= ]*>[^\d]*?</TD>)"
test_str = ("<TD STYLE=\"border-bottom>2,000,000</TD><TD STYLE=\"padding-bottom: 4pt; text-align: left\">&nbsp;</TD><TD STYLE=\"padding-bottom: 4pt\">&nbsp;</TD>\n"
    "<TD STYLE=\"text-align: left\">&nbsp;</TD><TD STYLE=\"text-align: right\">1,333,000</TD><TD STYLE=\"text-align: left\">&nbsp;</TD><TD>&nbsp;</TD>\n"
    "<TD COLSPAN=\"2\">&nbsp;</TD><TD>&nbsp;</TD></TR>")
matches = re.finditer(pattern, test_str, re.MULTILINE)
[match.group() for match in matches]  

Выход:

##  ['<TD STYLE="padding-bottom: 4pt; text-align: left">&nbsp;</TD>','<TD STYLE="padding-bottom: 4pt">&nbsp;</TD>','<TD STYLE="text-align: left">&nbsp;</TD>','<TD STYLE="text-align: left">&nbsp;</TD>','<TD>&nbsp;</TD>','<TD COLSPAN="2">&nbsp;</TD>','<TD>&nbsp;</TD>']  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...