RE2 中 Apps 脚本的正则表达式模式

问题描述 投票:0回答:1

我正在尝试使用

findText()
类的
DocumentApp
函数来获取 Google 文档中某些文本的位置。为此,我使用正则表达式 (RE2) 表达式。我希望它找到以下序列:
$$anyCharacterHere$$
;基本上任何包含在 $$ ... $$ 之间的东西。由于这些序列可能不止一个,我们必须告诉正则表达式匹配这种类型的任何序列,内部不包含任何“$”。

我尝试过使用以下方法:

const re2 = new RegExp("\\$\\$.*(?!\\\$)\\$\\$");
let range = docBody.findText(re2)

但它说这是一个无效的表达式。我尝试更改反斜杠之类的东西,但无法进一步。

我想要达到的目标例如在本文中:

这是一个 $$text$$,用于显示 $$regex$$ $$$hould$$ 如何工作的 $example$$。

正则表达式应该找到:$$text$$ 和 $$regex$$。

javascript regex google-apps-script re2
1个回答
0
投票

基于您的“示例字符串”的替代方案可能是这样的;

function myFunction() {
  const doc = DocumentApp.getActiveDocument();
  const matches = doc
    .getBody()
    .getText()
    .match(/\s[$]{2}[^$\s]*[$]{2}/g);
  if (!matches || matches.length == 0) return;

  var out=[];

  for (var i=0; i<matches.length; i++){
    out.push(matches[i].trim())
  }

  Logger.log(out);
  }
© www.soinside.com 2019 - 2024. All rights reserved.