я получил следующее регулярное выражение:Помощь с регулярным выражением
"throw new [a-zA-Z]+Exception"
Я хочу сделать это изменить так, чтобы все исключения аргументов ("Argument[a-zA-Z]*Exception"
) не включены
Как объединить их?
я получил следующее регулярное выражение:Помощь с регулярным выражением
"throw new [a-zA-Z]+Exception"
Я хочу сделать это изменить так, чтобы все исключения аргументов ("Argument[a-zA-Z]*Exception"
) не включены
Как объединить их?
Посмотрите на эту страницу для получения дополнительной информации: http://www.regular-expressions.info/completelines.html
Имейте в виду, что различные реализации регулярных выражений может не поддерживать все доступны варианты, поэтому YMMV. Если у вас есть инструмент конструктора regex, который позволит вам протестировать выражение в прямом эфире, я настоятельно рекомендую его. Вам нужно отрицательное выражение опережения:
"((?!Argument)[a-zA-Z])*Exception"
Убедитесь, что библиотека регулярных выражений поддерживает предпросмотр и негативные выражения LOOKAHEAD.
Вам нужен отрицательный lookbehind. См. here для более подробной информации. Perl-специфический, но ваша конкретная реализация, вероятно, имеет нечто подобное.
Lookbehind имеет такой же эффект, но работает в обратном направлении. Он сообщает движку regex для временного перехода назад в строку, чтобы проверить, можно ли найти текст внутри lookbehind .
(?<!a)b
соответствует «Ъ», которое не предшествует «а»
Я попробовал '(? jgauffin
«Использовать lookbehind» - это почти всегда плохой совет. Из тех вкусов, которые поддерживают lookbehinds, в большинстве случаев существуют различные ограничения на типы подвыражений, которые вы можете использовать в них. Например, '(
Это не так :((Notepad ++) Но вы ответили на вопрос с правильным примером. – jgauffin
Я использовал регулярные выражения для этого: http://aspnet.codeplex.com/workitem/7588;) – jgauffin