Пытаясь ответить на этот вопрос , я создал это регулярное выражение Python для соответствия любой подстроке egg
, за которой следует цифра, не являющаяся частью URL, перед которой стоит http://
:
>>> r = re.compile('(?:\s(?!http://\S*))egg\d')
Затем я применил его к следующей строке:
>>> a = "a egg1 http://egg2.com egg3 http://www.egg4.org egg5"
Результат:
>>> r.findall(a)
[' egg1', ' egg3', ' egg5']
Регулярное выражение некорректно для многих других проблем, но одна ошибкаподробнее: почему в результате появляется пробел?Поскольку я использовал утверждение типа lookahead вроде (?:\s...)
, не следует ли его исключить из результирующих строк?