使用Google Script查找使用RegEx替换

时间:2018-05-25 13:44:52

标签: regex google-apps-script

我正在尝试替换看起来像以下

的子字符串
Education|AAA|BBB|CCC|DDD|EEE

AAA|Educator|CCC|DDD|EEE

其中EducationEducator可以位于管道分隔字符串的任何位置。它们最多只存在一次或零次

我需要用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

我认为不同的ReplaceNth函数的RegEx模式会做到但不能得到它应该是什么

这是我用谷歌脚本的有限能力提出的,我主要是从搜索中拼凑起来

由于

编辑:更新了评论中给出的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 个答案:

答案 0 :(得分:0)

在正则表达式语法中,您可以使用垂直条创建“或”条件,一次搜索多个内容。您可以在G Suite表格中对此进行测试,而无需任何代码。

Search using regex

我想你想搜索

教育|教育者

并将其替换为

教育/教育者

如果您对结果感到满意,可以将其放回代码中 - 相同的正则表达式语法应该可以在javascript中使用。