У меня есть файл со списками строк, разделенных точкой с запятой, как этот:

aaaa;bbb;ccccccc;dd;  
eeee;fff;ggggggg;hh;  
iiii;jjj;kkkkkkk;ll;

и ищу выражение регулярного выражения для замены n-го элемента каждой строки (используя Notepad++ v6.8.3, механизм регулярных выражений в основном следует синтаксису Perl). Я верю этому выражению

^([^\;]*\;){n}([^;]*)

число n будет захватывать все до n-й точки с запятой. Чем мне нужно заменить его, чтобы изменить только n-ую запись каждой строки?

Как пример: если n = 3, я хотел бы получить регулярное выражение и замену, чтобы получить

aaaa;bbb;xxxxxxx;dd;  
eeee;fff;xxxxxxx;hh;  
iiii;jjj;xxxxxxx;ll;

1 ответ1

0

Поиск:

^((?:[^;]*;){2})([^;]*;)([^;]*)

Заменить:

\1xxxxxx;\3

Что я изменил:

  • сделал группу с квантификатором без захвата (?: и добавил группу захвата вокруг нее, чтобы захватить все сразу
  • изменил n на n-1 и скопировал внутреннюю группу ([^;]*;) чтобы захватить n- ю группу отдельно
  • убрал лишний побег

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .