Я использую Notepad++ v7.3.3 и тестирую следующее регулярное выражение:

Исходный текст

aa

Шаблон

(?<!a)a

Это возвращает два матча. Первый а, а второй а. При проверке этого выражения в regex101 возвращается только одно совпадение (первое a).

Почему Notepad++ также соответствует второму a? Может ли это быть ошибкой?

1 ответ1

2

Это не ошибка ... Notepad++ "поиск", когда выбрано ВНИЗ, не распознает никаких символов ДО курсора. Когда вы выбрали первый a, курсор переместился. Таким образом, как только ваш курсор будет передан первым a, он будет соответствовать оставшемуся a. То же самое можно сказать о поиске "UP", он будет игнорировать любой символ от курсора до конца документа.

Ваше регулярное выражение не потерпело неудачу, просто вы должны помнить и понимать природу текстового редактора в целом.

Regex 101 не выполнял "частичный" поиск строк, как это делал Notepad++. Однако вы можете исправить это, используя якоря в своем регулярном выражении. Вы можете привязать это регулярное выражение к началу строки с помощью ^. Тогда вы не получите совпадение со своим вторым.

^(?<!a)a

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