bugfix> regex > 投稿

私は次のような部分文字列を置き換えようとしています

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

ここで、 Education または Educator パイプで区切られた文字列の任意の位置に配置できます。最大で1回または0回しか存在しません

それらを 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 を置き換える2番目のパス 、私は得る

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

ReplaceNth関数のRegExパターンは異なると思いますが、本来あるべきものを取得できません

これは、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);
 }

回答 1 件
  • 正規表現の構文では、垂直バーを使用して「or」条件を作成し、複数のものを一度に検索できます。コードを必要とせずに、G Suite Sheetsでこれをテストできます。

    あなたが探したいと思う

    教育|教育者

    で置き換えます

    教育/教育者

    結果に満足したら、コードに戻すことができます-同じ正規表現構文がjavascriptで機能するはずです。

あなたの答え