В большинстве случаев лучше работать с HTML, используя соответствующий анализатор, но в некоторых случаях вполне нормально использовать регулярные выражения для работы.Я не знаю достаточно о вашей задаче, чтобы судить, является ли это хорошим решением или лучше использовать решение @Paul, но здесь я пытаюсь исправить ваше регулярное выражение:
serialNumber = re.search("Serial Number</td><td>(.*?)</td>", source, re.S | re.I )
Я удалил\n
, потому что это трудно, на мой взгляд (\ n, \ r, \ r \ n, ...?), вместо этого я использовал опцию re.S
(Dotall).
Но будьтезнайте, теперь, если есть новая строка, она будет в вашей группе захвата!то есть вы должны впоследствии удалить из своего результата пробелы.
Другая проблема вашего регулярного выражения - это <TD>
в вашей строке, но вы ищете <td>
.Для этого есть опция re.I
(IgnoreCase).
Вы можете найти больше объяснений о регулярных выражениях здесь на docs.python.org