2010-03-17 3 views
1

Я пытался выяснить, как написать это регулярное выражение. Он должен использоваться для ISAPI_Rewrite, модуля для IIS 6, для выполнения перезаписи URL.RegEx, соответствие, если не содержит

Я хочу, чтобы URL-адрес /hg/<parameter> был скопирован, поэтому его можно переписать на /hg/hgwebdir.cgi/<parameter>.

Я сопоставил его, используя ^/hg/(.*).

Проблема моя, если используется URL /hg/hgwebdir.cgi/<parameter>, регулярное выражение НЕ должно совпадать. Используя указанное выше регулярное выражение с этим URL-адресом, перепишите на /hg/hgwebdig.cgi/hgwebdig.cgi/<parameter>, что неверно.

Можете ли вы помочь мне создать соответствующий шаблон?

ответ

3

Вы можете использовать negative lookahead сделать это:

"^/hg/(?!hgwebdir.cgi)(.*)" 

http://www.regular-expressions.info/tutorial.html является большим учебником для регулярных выражений. =)

+0

спасибо. –

+0

Если вы ищете синтаксис регулярных выражений, не забудьте получить информацию о правильном диалекте regexp! Существуют регулярные выражения в perl, java, .NET и многих других языках/программах, и есть много небольших, но существенных различий. Например, в последний раз мне нужен был негативный взгляд, который он видел в vim, и выражение выглядело сильно отличным от того, что здесь написал Йенс. –

+0

@Carl: связанный мной сайт покрывает некоторые из причуд различных реализаций регулярных выражений. Не vim, хотя =) – Jens