Вы должны предварять свой паттерн отрицательным взглядом за утверждением:
(?<!http://)egg[0-9]
В этом регулярном выражении каждый раз, когда механизм регулярных выражений находит шаблон, соответствующий egg[0-9]
, он будет оглядываться назад, чтобы проверить, не соответствуют ли предыдущие шаблоны http://
. Отрицательное утверждение за задним числом начинается с (?<!
и заканчивается )
. Все, что находится между этими разделителями, не должно предшествовать следующему шаблону и не будет включено в результат.
Как использовать это в вашем случае:
>>> regex = re.compile('(?<!http://)egg[0-9]')
>>> a = "Example: http://egg1.com egg2 http://egg3.com egg4foo"
>>> regex.findall(a)
['egg2', 'egg4']