Ответ 1
Обновление до Notepad ++ v6. Из журнала изменений: "Поддерживается PCRE (совместимые с Perl регулярные выражения)". Я проверял, что | работает в поиске регулярных выражений при использовании Notepad ++ v6.
Я пытаюсь получить notepad ++ в regex, чтобы найти все экземпляры "abc" и "def" в следующем предложении:
abc отправился в def.
Кажется, что ни один из следующих синтаксисов не работает:
ПРИМЕЧАНИЕ: "[a | d]" соответствует любому экземпляру "a" или "d", когда я тестировал
Обновление до Notepad ++ v6. Из журнала изменений: "Поддерживается PCRE (совместимые с Perl регулярные выражения)". Я проверял, что | работает в поиске регулярных выражений при использовании Notepad ++ v6.
Нет ничего особенного в том, что "длиннее одного символа", Notepad ++ не поддерживает | символ в регулярном выражении. Даже "a | d" не работает. См. справочную страницу regex. Версия 6.1.1 Notepad ++ теперь поддерживает |
.
Я бы предложил использовать редактор с правильной реализацией regex, например gvim или UltraEdit.
Внутри объявления набора символов ([…]
) только символы \
, ]
и -
являются специальными символами со специальными функциями экранирования следующего символа, закрытием объявления набора символов и маркировкой диапазона символов (только если они не записаны в начале или конце), соответственно. Любой другой символ интерпретируется как простой символ.
Итак, ваш |
в [a|d]
означает, что [a|d]
описывает любой из символов a
, |
или d
, а не только a
или d
, как a|d
..
У меня была такая же проблема, вот как я приземлился здесь. Поскольку это недостаток блокнота ++, мы можем сделать это с помощью Powershell. В вашем случае просто запустите Select-String:
`ss abc,def filename`
Если в Unix у вас есть другие инструменты, такие как grep, конечно.
Я признаю, что вам нужно решение для блокнота ++, и я тоже, но иногда вам нужно это делать.
The | должен работать сейчас. Благодаря улучшению регулярного выражения в Notepad ++
а | Защита
(ABC) | (DEF)