Найти заменить с помощью RegEx с помощью скрипта Google

Я пытаюсь заменить подстроки, которые выглядят следующим образом

Education|AAA|BBB|CCC|DDD|EEE

AAA|Educator|CCC|DDD|EEE

где Education или Educator могут быть в любой позиции строки, разделенной вертикальной чертой. Они присутствуют максимум один раз или ноль раз

Мне нужно заменить их на Educator/Education

Я хочу

Педагог / Образование | AAA | BBB | CCC | DDD | EEE

AAA | Педагог / Образование | CCC | DDD | EEE

Это работает на первом проходе с Education, я получаю

Educator/Education|AAA|BBB|CCC|DDD|EEE

AAA|Educator|CCC|DDD|EEE

Но на втором проходе, заменив Educator, я получаю

Educator/Education/Education|AAA|BBB|CCC|DDD|EEE

AAA|Educator/Education|CCC|DDD|EEE

Я думаю, что другой шаблон RegEx для функции ReplaceNth сделает это, но не может получить то, что должно быть

Это то, что я придумал в своих ограниченных способностях с Google Script, которые я получил в основном из-за поиска

Спасибо

Изменить: обновлено с помощью решения Wiktors, указанного в комментарии

function FRCrit_n(){
     FRCrit("Elements", "Combined-What Are The Primary Role(s) Being Play?"); 
 }

function FRCrit(shtName,cheader){
var sh = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(shtName);
var data = sh.getDataRange().getValues();
var col =HTN(shtName,cheader)-1;  //Header to column index

  for(n=1;n<data.length;++n){
      data[n][col] = data[n][col].replace(/\bEducat(?:or|ion)\b/g, 'Educator/Education')[col],"Education","Educator/Education",1) 

      }

   sh.getRange(1,1,data.length,data[0].length).setValues(data);
 }

person Einarr    schedule 25.05.2018    source источник
comment
Я не знаю языка, но вот чистое регулярное выражение, которое должно работать для сопоставления: (^|\|)(Educator|Education)(\||$)   -  person Tim Biegeleisen    schedule 25.05.2018
comment
Просто используйте s = s.replace(/\bEducat(?:or|ion)\b/g, 'Educator/Education')   -  person Wiktor Stribiżew    schedule 25.05.2018
comment
Спасибо, Виктор, это отлично сработало   -  person Einarr    schedule 25.05.2018


Ответы (1)


В синтаксисе регулярных выражений вы можете создать условие «или», используя вертикальную полосу для поиска нескольких элементов за один раз. Вы можете протестировать это в таблицах G Suite без кода.

Искать с использованием регулярного выражения

Я думаю ты хочешь поискать

Образование | Педагог

и замените его на

Образование / Педагог

Когда вы довольны своими результатами, вы можете вернуть его в код - тот же синтаксис регулярного выражения должен работать в javascript.

person Aidan    schedule 25.05.2018
comment
Спасибо, Эйдан, я запомню это - person Einarr; 25.05.2018