2016-06-21 3 views
3

Я использую это регулярное выражение в Notepad ++, чтобы искать и заменять несколько слов.Поиск и замена регулярных выражений с помощью условных выражений: работает в Notepad ++, не в Powergrep?

(good)|(great)|(fine) 

(?1bad)(?2worse)(?3not) 

Проблема в том, что она не работает в Powergrep, любым способом ее изменить? Проблема в том, что Notepad ++ имеет ограниченное lengh или регулярное выражение, а Powergrep doesnt, а также поддерживает список регулярных выражений.

+0

Есть ли какой-нибудь пример, который будет работать в одной из этих программ? – Jim8645

+0

Если вы прочитали мой вопрос, у меня уже есть несколько замещающих регулярных выражений в Notepad ++, и я объяснил, зачем мне это нужно в Powergrep, заменяя один за другим, было бы бессмысленно. Это совсем не полезно, что вы написали. – Jim8645

ответ

2

В PowerGREP manual замена условными обозначениями никогда не упоминается. Я предлагаю вам общий путь вокруг, который решает N поиска & замены всего 3 шагов общей (очевидно, если у вас есть только три слова, чтобы заменить, вы можете сделать первый заменив их один за другим):

Первый шаг (добавление маркеров)

(F_1)|(F_2)|(F_3)|...|(F_n) 

{\1[R_1]}{\2[R_2]}{\3[R_3]}...{\n[R_n]} 

Где (F_1, ..., F_n) слова (или регулярные выражения), чтобы заменить с точки (R_1, ..., R_n) соответственно.

В вашем примере:

(good)|(great)|(fine) 

{\1[bad]}{\2[worse]}{\3[not]} 

Второй шаг (сохраняя хороший)

\{[^\[\]\{\}]+\[([^\[\]\{\}]*)\]\} 

\1 

Третий шаг (удаление зла)

\{\[[^\[\]\{\}]*\]\} 

null 

Если вы работаете с слова, что уже включите использование фигурных и квадратных скобок, и вы не хотите делать ошибки, вы можете использовать другие маркеры (угловые скобки, тройные вершины и т. д. и т. д.).