2009-05-04 1 views
19

Я пытаюсь получить Notepad ++ для Regex найти все экземпляры «ABC» и «DEF» в следующем предложении:Как использовать канал Regex для Notepad ++ | для строк длиной более одного символа?

Азбука пошла к опру.

Ни один из следующих синтаксисов не похоже на работу:

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

Примечание: "[а | d]" соответствует любому экземпляр "а" или "г", когда я тестировал

+1

[а | d] не означает, что вы думаете, он делает, это означает «соответствовать любому of a, d или | ". [ad] будет делать то же самое, но это отличается от | d. –

+0

Что я имею в виду, | символ внутри [a | d] на самом деле ничего не делает, он просто говорит, что также хорошо соответствовать «|». Это не то, что вы пытались сделать. Поскольку Notepad ++ не поддерживает использование | символ означает «один», то, что вы пытаетесь сделать, будет невозможно. –

+0

Как я могу выполнить поиск SQL-запроса, набранного в «любом sql-запросе», даже если запрос многострочный. Я попробовал ["] [^ \ n] ["] для одной строки и ["] * ["] для многострочных, но в случае многострочного игнорирует вторую цитату в той же строке и заканчивается на следующей строке в позиции позиции ramdom. Мне нужна помощь здесь, и я нахожу ее с помощью Notepad ++. – Rick2047

ответ

11

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

24

Это ничего особенного в том, что «длиннее одного символа», Notepad ++ не поддерживает | символ в регулярном выражении. Даже «a | d» не работает. См. the regex help page. Версия 6.1.1 Notepad ++ теперь поддерживает |.

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

+0

Последняя версия на сегодня (Notepad 10.1.1) поддерживает | в RegEx –

+1

@DragosToader ... и все же, вы не беспокоитесь, отвечая на вопрос о? –

+0

@ b1naryatr0phy Ответ для Notepad 10.1.1 - поиск (abc) | (def) –

1

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

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

1

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

`ss abc,def filename` 

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

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

1

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

а | Защита

(ABC) | (DEF)

Смежные вопросы