3

Итак, Notepad++ получил обновление до v6.0. Одной из их новых функций является PCRE (Perl Compatible Regular Expressions) .

Я пытался использовать эту новую функцию, чтобы найти и заменить вещи в файле. Я попробовал регулярное выражение:

{\$([a-zA-Z_]*)}

и он кричал на меня, говоря: "Недопустимое регулярное выражение".

Я тестировал это регулярное выражение в других программах (например, в моей основной IDE, Geany), и он работал нормально.

Почему это не работает в Notepad++ 6.0?

1 ответ1

3

Вы должны выйти из {} следующим образом:

\{\$([a-zA-Z_]*)\}

Я предполагаю, что Geany и rubular.com не используют PCRE (или используют по-другому). Обратите внимание, что {} обычно используются для обозначения квантификаторов.

Не проверив источник, я могу только предположить, что Notepad++ пытается быть слишком умным перед передачей регулярного выражения в библиотеку PCRE. Если я запускаю следующий код в PHP:

echo preg_match( '{\$([a-zA-Z_]*)}', '{$something}' );

Он печатает 1 сразу. Не нужно ничего избегать.

Извините, что не могу это объяснить :(

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .