Подтвердить что ты не робот

Как использовать канал Regex для Notepad ++ | для строк длиной более одного символа?

Я пытаюсь получить notepad ++ в regex, чтобы найти все экземпляры "abc" и "def" в следующем предложении:

abc отправился в def.

Кажется, что ни один из следующих синтаксисов не работает:

  • абв | Защита
  • [а | Защита]
  • (ABC) | (DEF)
  • (а | DEF)

ПРИМЕЧАНИЕ: "[a | d]" соответствует любому экземпляру "a" или "d", когда я тестировал

4b9b3361

Ответ 1

Обновление до Notepad ++ v6. Из журнала изменений: "Поддерживается PCRE (совместимые с Perl регулярные выражения)". Я проверял, что | работает в поиске регулярных выражений при использовании Notepad ++ v6.

Ответ 2

Нет ничего особенного в том, что "длиннее одного символа", Notepad ++ не поддерживает | символ в регулярном выражении. Даже "a | d" не работает. См. справочную страницу regex. Версия 6.1.1 Notepad ++ теперь поддерживает |.

Я бы предложил использовать редактор с правильной реализацией regex, например gvim или UltraEdit.

Ответ 3

Внутри объявления набора символов ([…]) только символы \, ] и - являются специальными символами со специальными функциями экранирования следующего символа, закрытием объявления набора символов и маркировкой диапазона символов (только если они не записаны в начале или конце), соответственно. Любой другой символ интерпретируется как простой символ.

Итак, ваш | в [a|d] означает, что [a|d] описывает любой из символов a, | или d, а не только a или d, как a|d..

Ответ 4

У меня была такая же проблема, вот как я приземлился здесь. Поскольку это недостаток блокнота ++, мы можем сделать это с помощью Powershell. В вашем случае просто запустите Select-String:

`ss abc,def filename`

Если в Unix у вас есть другие инструменты, такие как grep, конечно.

Я признаю, что вам нужно решение для блокнота ++, и я тоже, но иногда вам нужно это делать.

Ответ 5

The | должен работать сейчас. Благодаря улучшению регулярного выражения в Notepad ++

а | Защита

(ABC) | (DEF)