2010-11-12 3 views
1

я получил следующее регулярное выражение:Помощь с регулярным выражением

"throw new [a-zA-Z]+Exception" 

Я хочу сделать это изменить так, чтобы все исключения аргументов ("Argument[a-zA-Z]*Exception") не включены

Как объединить их?

ответ

1

Посмотрите на эту страницу для получения дополнительной информации: http://www.regular-expressions.info/completelines.html

Имейте в виду, что различные реализации регулярных выражений может не поддерживать все доступны варианты, поэтому YMMV. Если у вас есть инструмент конструктора regex, который позволит вам протестировать выражение в прямом эфире, я настоятельно рекомендую его. Вам нужно отрицательное выражение опережения:

"((?!Argument)[a-zA-Z])*Exception" 

Убедитесь, что библиотека регулярных выражений поддерживает предпросмотр и негативные выражения LOOKAHEAD.

+0

Это не так :((Notepad ++) Но вы ответили на вопрос с правильным примером. – jgauffin

+0

Я использовал регулярные выражения для этого: http://aspnet.codeplex.com/workitem/7588;) – jgauffin

1

Вам нужен отрицательный lookbehind. См. here для более подробной информации. Perl-специфический, но ваша конкретная реализация, вероятно, имеет нечто подобное.

Lookbehind имеет такой же эффект, но работает в обратном направлении. Он сообщает движку regex для временного перехода назад в строку, чтобы проверить, можно ли найти текст внутри lookbehind . (?<!a)b соответствует «Ъ», которое не предшествует «а»

+0

Я попробовал '(? jgauffin

+0

«Использовать lookbehind» - это почти всегда плохой совет. Из тех вкусов, которые поддерживают lookbehinds, в большинстве случаев существуют различные ограничения на типы подвыражений, которые вы можете использовать в них. Например, '(

Смежные вопросы