Я не совсем знаком с возможностями поиска и замены Notepad++, но sed Unix очень похож.
Я полагаю, что вы никак не можете получить точный результат, который вы хотите, с точной замененной строкой, которую вы показали, потому что вы хотите пробелы перед испанскими именами ( Maria , Juan и т.д.), Но таких входных данных нет текст.
Вам нужно будет добавить хотя бы один пробел в строку замены.
Опция -r указывает sed использовать «расширенные регулярные выражения».
Нам не нужен этот вариант, но
sed (по умолчанию) использует ( и ) для сопоставления скобок и \(…\) для захвата группы, в то время как
sed -r использует \( и \) для сопоставления буквенных скобок и (…) для захвата группы.
Вы, кажется, ожидаете, что сможете использовать (…) для захвата группы, поэтому я сделаю это с -r .
Вы можете сделать это одной заменой в sed с
sed -r 's/\s([A-Za-z]*)\s\(([A-Za-z]*)\)(,| and)*/\n\1 = \2/g'
Это можно разбить на
sed -r 's/ \s ([A-Za-z]*) \s \( ([A-Za-z]*) \) (,| and)? / \n\1 = \2 /g'
s/ - начать замену команды.
\s - пробел.
В sed вы можете использовать реальные символы пробела; Я подозреваю, что это верно и для Notepad++.
В sed вы также можете использовать [[:space:]] .
Конечно, пробел соответствует только пробелу, но \s и [[:space:]] соответствуют пробелу или табуляции.
([A-Za-z]*) - группа захвата любого количества букв (верхнего или нижнего регистра), чтобы соответствовать английской версии имени.
В sed вы также можете использовать [[:alpha:]] (или [[:upper:]] или [[:lower:]] , по желанию).
\s - другое пространство
\( - буквальная скобка слева (та, что перед испанской версией названия).
([A-Za-z]*) - то же, что и выше - группа захвата любого количества букв (верхний или нижний регистр), чтобы соответствовать испанской версии имени.
\) - буквальная круглая скобка справа (та, что после испанской версии названия).
(,| and)? - группа, которая соответствует , или and , ноль или один раз.
Это соответствует материалу, который находится между правой скобкой после испанской версии имени и следующей английской версией имени.
Нам нужно иметь возможность обрабатывать ноль вхождений этой группы, потому что мы должны соответствовать Joseph (Jose) , даже если после него нет запятой или « and ».
Обратите внимание, что мы могли бы использовать \sand вместо and ; Я верю в это and гораздо более читабелен.
Также обратите внимание, что мы могли бы использовать * (ноль или более, без ограничений) вместо ? ,
/ - конец строки поиска; начало строки замены.
\n\1 = \2 - строка замены (новая строка, первая группа захвата, = и вторая группа захвата).
Как упоминалось ранее, я добавил пробелы до и после = .
/g - конец команды.
g означает «глобальный» и указывает, что подстановка должна выполняться столько раз, сколько это возможно (по умолчанию используется один раз на строку).
Таким образом, команда Notepad++, вероятно, очень похожа.