Google表格:REGEXREPLACE匹配除特定模式之外的所有内容

时间:2015-02-27 22:30:44

标签: regex google-sheets cloud

我会尝试替换此字符串中的所有内容:

  

[JGMORGAN - BANK2] n°10 NEWYORK,n°222 CAEN,MONTELLIER,VANNES / TARARTA TIs   1303222074,1403281851& 1307239335 et Cloture TIs 1403277567,   1410315029

以下数字除外: 1303222074 1403281851 1307239335 1403277567 1410315029

我已经构建了一个REGEX来匹配它们:

1[0-9]{9}

但是我没有想到要做的就是除了所有比赛之外的所有事情......

3 个答案:

答案 0 :(得分:1)

谷歌电子表格使用Re2正则表达式引擎,并不支持许多有用的功能,可以帮助您做到这一点。因此,基本的解决方法可以帮助您:

首先匹配您想要保留的内容并将其捕获:

模式:[0-9]*(?:[0-9]{0,9}[^0-9]+)*(?:([0-9]{9,})|[0-9]*\z)

替换:$1 (后面有空格)

demo

所以可能是这样的:

=TRIM(REGEXREPLACE("[JGMORGAN - BANK2] n° 10 NEWYORK, n° 222 CAEN, MONTELLIER, VANNES / TARARTA TIs 1303222074, 1403281851 & 1307239335 et Cloture TIs 1403277567, 1410315029"; "[0-9]*(?:[0-9]{0,9}[^0-9]+)*(?:([0-9]{9,})|[0-9]*\z)"; "$1 "))

答案 1 :(得分:0)

好的,首先感谢Casimir的帮助。它给了我一个想法:用谷歌的内置功能和强大的正则表达式来实现它是不可能的。 因此,我发现我可以为自己的目的制作自制功能(是的,我不是#34;最新的" ......)。 所以这就是它(它没有很好的编码,它的返回加倍。但是我没有正确地修复它,而是使用内置的UNIQUE()函数来删除它们,所以是的它是丑陋的而且我很快乐,但是它完成了这项工作,也就是说,特定正则表达式的所有匹配列表(即:1 [0-9] {9}):

function ti_extract(input) {
  var tab_tis = new Array();
  var tab_strings = new Array();


  tab_tis.push(input.match(/1[0-9]{9}/));

  var string_modif = input.replace(tab_tis[0], " ");
  tab_strings.push(string_modif);

  var v = 0;
  var patt = new RegExp(/1[0-9]{9}/);
  var fin = patt.test(tab_strings[v]);

  var first_string = tab_strings[v];


  do {
    first_string = tab_strings[v]; // string 0
    tab_tis.push(first_string.match(/1[0-9]{9}/));

    var string_modif2 = first_string.replace(tab_tis[v], " ");
    tab_strings.push(string_modif2);

    v += 1;
  }
  while(v < 15)

  return tab_tis;
}

答案 2 :(得分:0)

您也可以使用动态本机函数执行此操作:

=REGEXEXTRACT(A1,rept("(\d{10}).*",counta(split(regexreplace(A1,"\d{10}","@"),"@"))-1))

基本上它首先被所需的字符串拆分,以计算出它的出现次数,然后重复正则表达式以动态创建该数量的捕获组,从而最终只留下那些值。

enter image description here