如何在Google文档应用程序脚本中替换换行符或换行符(Ctrl + Enter)?

时间:2019-05-16 04:17:22

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

我有一个有效的模板(Google文档),并且具有以下模式的变量要替换为值

  

{{BASIC SALARY_.Description}}
  {{OT1.5.Description}}
  {{MEL ALW.Description}}
  {{OST ALW.Description}}
  {{TRV ALW.Description}}
  {{ADV SAL.Description}}

注意:我在Google文档中使用了软换行符(ctrl + enter),因为我无法找出普通的换行符“ \ n”,“ \ n”,“ \ r \ n”,但我的结果总是很奇怪,因为某些行需要替换为适当的描述,但有些行需要完全无效(将整个{{pattern}}与换行符一起删除以避免空行)

我尝试了多种REGEX模式,在在线论坛上搜索了 https://github.com/google/re2/wiki/Syntax
Eliminate newlines in google app script using regex
Use RegEx in Google Doc Apps Script to Replace Text

找出唯一的软换行符是唯一的处理方法(确定模式 \ v 。请检查我的示例代码,因为模式替换无法正常工作。

// code block 1
var doc = DocumentApp.openById(flPayslip.getId());
var body = doc.getBody();
body.replaceText("{{BASIC SALARY_.Description}}", "Basic Salary");
body.replaceText("{{OST ALW.Description}}", "Outstation Allowance");
// code block 2
var doc = DocumentApp.openById(flPayslip.getId());
var body = doc.getBody();
body.replaceText("{{BASIC SALARY_.Description}}", "Basic Salary");
body.replaceText("{{OST ALW.Description}}", "Outstation Allowance");
body.replaceText("{{.*}}\\v+", "");  // to replace soft linebreak

代码块1的实际结果

  

基本工资
  {{OT1.5.Description}}
  {{MEL ALW.Description}}
  离站津贴
  {{TRV ALW.Description}}
  {{ADV SAL.Description}}

代码块2的实际结果:

  

基本工资

问题:实际结果“ Outstation Allowance”已从正则表达式替换中删除。

预期结果

  

基本工资
  离站津贴

我应该在代码中使用什么合适的正则表达式模式?

1 个答案:

答案 0 :(得分:2)

尝试

body.replaceText("{{[^\\v]*?}}\\v+", "");  // No \v inside `{{}}` and  not greedy`?`

使用{{.*}}时,.*匹配第一个{{和最后一个}}之间的所有内容

  

基本工资
  {{

     
    

OT1.5.Description}}
    {{MEL ALW.Description}}
    离站津贴
    {{TRV ALW.Description}}
    {{ADV SAL。说明

  
     

}}