Вносить изменения в текст, кроме частей в угловых скобках - PullRequest
0 голосов
/ 19 февраля 2019

Предполагая наличие следующего текста,

dogs are very nice <a href="http://dogs.com">read about nice dogs here</a>

Мне нужно изменить все, что не в угловых скобках, поэтому текст будет

cats are very nice <a href="http://dogs.com">read about nice cats here</a>

Я нашел это регулярное выражение\([^)]*\) может пригодиться, но похоже, что он не работает:

s = 'dogs are very nice <a href="http://dogs.com">read about nice dogs here</a>'
s = re.sub(r'\([^)]*\)', 'cats', s)
print(s)
'dogs are very nice <a href="http://dogs.com">read about nice dogs here</a>'

Извините, если этот вопрос выглядит неубедительным, но я действительно новичок в регулярных выражениях.Спасибо за вашу помощь.

1 Ответ

0 голосов
/ 19 февраля 2019

Этот шаблон регулярных выражений, похоже, не имеет ничего общего с тем, что вы хотите - там даже нет упоминания о «собаке», не говоря уже об угловых скобках.В частности, он сопоставляет любой текст в круглых скобках (например, (abc)).

В целом, я не думаю, что вы сможете использовать регулярные выражения здесь.

Если HTML не содержит никаких других угловых скобок (довольно предположение), вы можете добиться успеха с (<[^<>]*>[^<>]*)*dogs, который должен соответствовать «собакам», только если после каждого «<» в конце следует «>».

А если серьезно, просто установите что-то вроде Beautiful Soup и проанализируйте HTML;это просто и намного надежнее.

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