我有一个有效的模板(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”已从正则表达式替换中删除。
预期结果
基本工资
离站津贴
我应该在代码中使用什么合适的正则表达式模式?
答案 0 :(得分:2)
尝试
body.replaceText("{{[^\\v]*?}}\\v+", ""); // No \v inside `{{}}` and not greedy`?`
使用{{.*}}
时,.*
匹配第一个{{
和最后一个}}
之间的所有内容
基本工资
{{OT1.5.Description}}
{{MEL ALW.Description}}
离站津贴
{{TRV ALW.Description}}
{{ADV SAL。说明}}