【问题标题】:Removing tabs and newlines with regular expressions issue使用正则表达式问题删除制表符和换行符
【发布时间】:2015-03-23 16:13:34
【问题描述】:

正则表达式:删除 TAB \t 选项卡 var regex = /\s[A-Za-z]+/g 不起作用

selectFirstEmptyRow function () {

  var ss = SpreadsheetApp.openByUrl ("https://docs.google.com/spreadsheets/d/---ID-----edit#gid=395019283");
  var date = Utilities.formatDate(new Date() ss.getSpreadsheetTimeZone(), "d" + "- 0" + "M" + "-" + "y");
  var sheet = ss.getSheetByName(date);
  var regex = /[^0-9]*/g; // extract the string before digital channel
  var doc = DocumentApp.getActiveDocument().getText()
  var result = RegExp.exec(doc);
 // * Extract white \ s match any white space character [\ r \ n \ t \ f]
  var regex = /\s[A-Za-z]+/g; // extract the spaces in front of and behind "Name Surname"
  RegExp.exec var result = (result);
  sheet.setActiveSelection(sheet getRange ("B" + getFirstEmptyRowWholeRow())).setValue(result);
   Logger.log(result.getText);

我无法使用语法删除标签 \t 和换行符 \n

var regex = /\s[A-Za-z]+/g;

当我将string "Name Surname" 插入电子表格时,它前面还有一行。 经过分析,问题似乎是标签\t,它没有被删除。

我尝试从"text document" 中提取一个字符串(它始终位于文档顶部,直到第一个数字链)并在第一个框真空列@987654331 的位置放入“电子表格文档”电子表格@。

在同一个"text document" 中处理这个字符串并没有给我使用语法更新年龄带来任何问题

 var regex = /[^0-9]*/g; // extract the string before a digit

文档中的字符串:

var str = '\n\n\n\Surname NAME\n34 Years\n\n......... .. "

这是完整的脚本:

/// var result = result.replace(/^[\r\n]+|.|[\r\n]+$/g, "");// extrait les espaces devant et derriere Nom Prenom气体不工作

 /////    Facturer  Acte      ////

     function FacturerActe() {

      var regexp = /[^0-9]*/g ;// extrait la chaine de caractère avant la chaine numérique
      var doc = DocumentApp.getActiveDocument().getText();
      var result = regexp.exec(doc);
      var PrenomNom = new RegExp(result,"gm"); 
      Logger.log(PrenomNom.getText);

      var ss = SpreadsheetApp.openByUrl("https://docs.google.com/spreadsheets/d/19rWt8JEGbYM29-W4tI2gj6peXR3hjvj51FxDFt2gFkU/edit#gid=395019283");
      var date = Utilities.formatDate(new Date(), ss.getSpreadsheetTimeZone() , "d"+"-"+"mm"+"-"+"y");
      var sheet = ss.getSheetByName(date);
      ss.setActiveSheet(sheet);

      var cell = sheet.getRange("A40");
      cell.setNote("Aujourd'hui est un nouveau jour ! Nous sommes le :"+date);

      selectFirstEmptyRow(); // Place le curseur sur la premiere ligne Vide de la Colonne "B"
    }

     //* Placez le curseur de l'utilisateur actuel dans la première cellule de la première ligne vide.
     //*
    function selectFirstEmptyRow()  { 

      var ss = SpreadsheetApp.openByUrl("https://docs.google.com/spreadsheets/d/19rWt8JEGbYM29-W4tI2gj6peXR3hjvj51FxDFt2gFkU/edit#gid=395019283");
      var date = Utilities.formatDate(new Date(), ss.getSpreadsheetTimeZone() , "d"+"-"+"mm"+"-"+"y");
      var sheet = ss.getSheetByName(date);
      var regexp = /[^0-9]*/g ;// extrait la chaine de caractère avant la chaine numérique

      var doc = DocumentApp.getActiveDocument().getText();
      var result = regexp.exec(doc);
      var regexp = /\s[A-Z a-z]+/g ;// extrait les espaces devant et derriere Nom Prenom
    //* Extrait les blancs

      var result = regexp.exec(result);

    ///  var result = result.replace(/^[\r\n]+|\.|[\r\n]+$/g, "");// extrait les espaces devant et derriere Nom Prenom  GAS D'ONT WORK

      sheet . setActiveSelection (sheet.getRange("B" + getFirstEmptyRowWholeRow())).setValue(result);
       Logger.log(result.getText);
    }

    /**
     * " Trouve la première ligne vide la Colonne "B" " de checker de Mogsdad.
     */ 
    function getFirstEmptyRowWholeRow ()  { 

      var ss = SpreadsheetApp.openByUrl("https://docs.google.com/spreadsheets/d/19rWt8JEGbYM29-W4tI2gj6peXR3hjvj51FxDFt2gFkU/edit#gid=395019283");
      var date = Utilities.formatDate(new Date(), ss.getSpreadsheetTimeZone(), "d"+"-"+"mm"+"-"+"y");
      var sheet = ss.getSheetByName(date);
      var range = sheet.getDataRange(); 
      var values = range.getValues(); 
      var row =  1 ; 
      for  (var row = 1; row < values.length; row ++)  { 
        if  (!values[ row ].join(""))  break ; 
      } 

      return  (row + 1); 

    }

     /////   Fin   Facturer  Acte      ////

【问题讨论】:

  • 我没有看到为正则表达式变量创建的任何实例,如这个 SO 问题:stackoverflow.com/questions/17573598/…。尝试更改它,看看是否有效。
  • 你的正则表达式也是错误的。 az 应该是 a-z 等
  • 齐格!由于 stackoverflow.com 上的自动翻译而出错。正则表达式是: var regexp = /\s[A-Z a-z]+/g ;但是这个 Other Regex 工作得更好 var regexp = /[^a-z\s-]+[A-Z\s-]+/g;

标签: regex google-apps-script google-docs


【解决方案1】:

根据Using regular expressions to search for data in your spreadsheet,您可以使用[\t\r\n] 模式匹配任何换行符和制表符。由于您一次拥有多个,因此您应该添加一个量化器+。此外,由于您希望捕获 2 行,因此您也应该将 [\t\r\n]+ 添加到模式中。

这将让您在换行符之间捕获带有 Name 和 Age 的 2 行:

[\r\n\t]+(.+[\r\n\t]+.+)[\t\r\n]+

您可以稍后删除换行符:

var result = str.replace(/[\r\n\t]+(.+[\r\n\t]+.+)[\t\r\n]+/, '$1');

这是regex101.com 上的样子。

alert("'" + "\n\t\n\nNew line\n\t\nSecond 34 line\n\t\n....".replace(/[\r\n\t]+(.+[\r\n\t]+.+)[\t\r\n]+/, '$1') + "'")

【讨论】:

  • 谢谢美人。太棒了
  • 帕斯杜兜售。 Veuillez approuver la réponse, s'il vous plaît.
猜你喜欢
  • 2013-04-27
  • 2011-07-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多