.Net Регулярное выражение - как сделать исключение точного соответствия для полной строки? - PullRequest
5 голосов
/ 12 апреля 2010

Мне нужно регулярное выражение .Net, которое соответствует чему-либо ДРУГОЙ, чем точное точное полное совпадение строки. Итак, в основном:

^Index$

... это единственное исключение, которое меня волнует. Строки могут начинаться, заканчиваться или содержать «указатель», но не могут точно совпадать. Похоже, мой мозг сегодня не работает, и я не могу разобраться с этим.

EDIT

Ответ ДОЛЖЕН быть получен через сам шаблон, поскольку я передаю аргумент в стороннюю библиотеку и не могу контролировать процесс, кроме как через шаблон Regex.

Ответы [ 4 ]

5 голосов
/ 12 апреля 2010

Это должно сработать:

^(?!Index$)
4 голосов
/ 12 апреля 2010

Если регулярное выражение обязательно,

Match match = Regex.Match(input, @"^Index$");

if (!match.Success){
    //do something
}

И ужасным образом

Match match = Regex.Match(input, @"^(.*(?<!Index)|(?!Index).*)$");

if (match.Success){
    //do something
}

Примечание: второй не проверен, и движок регулярных выражений должен поддерживать полный взгляд вперед и взгляд назад

0 голосов
/ 12 апреля 2010

Вы можете проверить !regex.Match.Success

0 голосов
/ 12 апреля 2010

А как же if (!r.Match("^Index$").Success) ...?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...