【问题标题】:Use RegEx in Google Doc Apps Script to Replace Text在 Google Doc Apps 脚本中使用 RegEx 替换文本
【发布时间】:2019-01-23 16:23:38
【问题描述】:

Google Doc 中有一行带有时间和日期戳。我已经使用正则表达式编写了以下代码,以用当前时间/日期替换该行,但我不确定为什么这不起作用。

function UpdateDate() {

  var document = DocumentApp.getActiveDocument();
  var date = new Date();

  var regExp = /[0-9]{1,2}:[0-9]{2} [A-Z]{2} [A-Za-z]* [0-9]{1,2}, [0-9]{4}/;
  document.replaceText(regExp, Utilities.formatDate(date, 'America/Denver', 'h:mm a MMMM dd, yyyy'));

}

如果我将 document.replaceText 行中的“regExp”替换为例如“2019 年 1 月 22 日下午 3:43”,则代码会正确地将其替换为更新的日期/时间,但它无法替换匹配的正则表达式。有任何想法吗?谢谢!

【问题讨论】:

  • 您能指出您使用的语言吗?
  • @joanis - 我在谷歌脚本中,所以我使用的是 javascript。
  • 使用var regExp = "[0-9]{1,2}:[0-9]{2} [A-Z]{2} [A-Za-z]* [0-9]{1,2}, [0-9]{4}";,通过字符串文字传递正则表达式模式。

标签: regex google-docs


【解决方案1】:

您应该在字符串文字的帮助下传递正则表达式:

var regExp = "[0-9]{1,2}:[0-9]{2} [A-Z]{2} [A-Za-z]* [0-9]{1,2}, [0-9]{4}";

replaceText 文档对此进行了解释:

搜索模式作为字符串传递,而不是 JavaScript 正则表达式对象。因此,您需要转义模式中的任何反斜杠。

该方法使用谷歌的RE2正则表达式库,限制supported syntax

【讨论】:

  • 太棒了。感谢您的回答和支持文档!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-21
  • 1970-01-01
相关资源
最近更新 更多