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