Помогите правильно составтиь регулярное выражение

golos81

Новичок
Помогите правильно составтиь регулярное выражение

Мне надо учесть все URL, которые начинаются с http://win.site.ru/, затем обязательно должно идти что-нибудь, но не cgi-bin/splash

Пишу так:
.*(win.site.ru/).+^(cgi-bin/splash) - не получается.

Подскажите, что неправильно?
 

dark-demon

d(^-^)b
Сопоставление подмаски, содержащий утверждение, происходит обычным образом, за исключением того, что текущая позиция не изменяется. Утверждения касательно последующего текста начинаются с (?= для положительных утверждений и с (?! для отрицающих утверждений. Например, \w+(?=;) совпадает со словом, за которым следует символ ';', но при этом сама точка с запятой в совпадение не включается. А foo(?!bar) соответствует любому появлению "foo", после которого не идёт "bar". Заметим, что похожий шаблон (?!foo)bar не будет искать вхождение "bar", которому предшествует любая строка за исключением "foo". Но, тем не менее, он будет соответствовать любым вхождениям подстроки "bar", поскольку условие (?!foo) всегда TRUE, если следующие три символа - "bar". Для получения желаемого результата необходимо воспользоваться второй категорией утверждений.
 

Bitterman

Новичок
Еще, кстати, стоит заслешить точки и другие служебные символы
 

golos81

Новичок
Автор оригинала: dark-demon
Написал так:
.*(win.site.ru/)(!?cgi-bin/splash)
Стало срабатывать, но только в тех случаях, когда есть строка
http://win.site.ru/cgi-bin/splash
А ведь мне надо наоборот - должно срабатывать, когда после 'http://win.site.ru/' идет все что угодно, кроме 'cgi-bin/splash'.
Т.е. должна срабатывать, например, такая строка 'http://win.site.ru/blabla'.
 

Bitterman

Новичок
Приглядись повнимательней, как обозначается отрицающая последовательность в мануале и как она обозначена у тебя. Все работает замечательно.
 
Сверху