Python Regex «не» для определения шаблона в пределах ‹a›‹/a›

У меня проблема с написанием регулярного выражения python «не», чтобы идентифицировать определенный шаблон в тегах href.

Моя цель — заменить все вхождения DSS[a-z]{2}[0-9]{2} ссылкой href, как показано ниже, но без замены того же шаблона, встречающегося внутри тегов href.

Настоящее регулярное выражение:

replaced = re.sub("[^http://*/s](DSS[a-z]{2}[0-9]{2})", "<a href=\"http://test.com=\\1\">\\1</a>", input)

Мне нужно добавить это новое регулярное выражение с помощью оператора ИЛИ к существующему, которое у меня есть.

ИЗМЕНИТЬ:

Я пытаюсь использовать регулярное выражение только для простой операции. Я хочу заменить вхождения шаблона в любом месте html с помощью регулярного выражения, за исключением тех, которые встречаются внутри<a><\a>.


person c_prog_90    schedule 13.07.2011    source источник
comment
возможный дубликат Python Find & Replace Beautiful Soup   -  person Andreas Jung    schedule 13.07.2011
comment
Чего именно вы пытаетесь достичь с помощью [^http://*/s]? Это не имеет никакого смысла.   -  person Tim Pietzcker    schedule 13.07.2011
comment
Я пытаюсь не сопоставлять шаблон, когда он находится внутри ссылки http://   -  person c_prog_90    schedule 13.07.2011
comment
@thinkcool: регулярные выражения не могут сделать это надежно, даже если вы думаете, что это простая операция. Люди не расскажут вам, как это сделать с помощью регулярных выражений, потому что регулярные выражения не подходят для этой работы. Его задают снова и снова, поэтому e-satis дает стандартный ответ. Если вы работаете с HTML, используйте анализатор HTML.   -  person Thomas K    schedule 13.07.2011


Ответы (1)


Ответ на любой вопрос, содержащий регулярное выражение и HTML в одном предложении: здесь.

В Python лучшим парсером HTML действительно является Beauutilf Soup.

Если вы хотите сохранить регулярное выражение, вы можете попробовать отрицательный просмотр назад чтобы избежать чего-либо, предшествующего ". На свой страх и риск.

person e-satis    schedule 13.07.2011
comment
Ну.... stackoverflow.com/questions/4231382/ - person Richard H; 13.07.2011
comment
Смешной. Забавно, но давайте сохраним это для мастера регулярных выражений с очень особыми пограничными случаями. - person e-satis; 14.07.2011