Учитывая следующее регулярное выражение и текст темы, почему отрицательный просмотр вперед применяется только к последнему символу названной группы захвата URL
?
// Regex
(?<URL>(?<Protocol>\w+):\/\/(?<Domain>[\w@][\w.:@]+)\/?[\w\.?=%&=\-@/$,]*)(?!'|"|(</a))
// Subject text
<p><a href="http://example.com">http://example.com</a> and http://example.com</p>
Это регулярное выражение имеет отрицательный прогноз (?!"|(</a))
, который является попыткой не сопоставить URL-адреса, находящиеся в теге <a>
. Это делается путем проверки, следует ли за URL-адресом цитата ('
или "
) или закрывающий тег </a
.
Я получаю следующие результаты
http://example.co
http://example.co
http://example.com
Я ожидал, что отрицательный просмотр будет применяться ко всей группе захвата, а не только к ее последнему символу. Это возможно? Что я делаю неправильно? Я ожидал сопоставить только последний экземпляр http://example.com
, который должен быть захвачен.