如何在Google文档文本编辑器中使用正则表达式查找和替换?

时间:2015-04-14 05:04:41

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

我试图将我的笔记从Kindle导入到Google文档中(您可以查看here),我有一份文档,其中我要删除以下所有出现的内容文字(包括换行符):

  

在6567位置阅读更多内容•删除此突出显示
  添加备注

我提出了以下搜索模式并在this google sheet上对其进行了测试,以确保我的正则表达式语法有效:

"Read more at location (\d*)   • Delete this highlight\nAdd a note"

然后我创建了一个谷歌应用脚​​本,并将其加载到我的文档中:

function onOpen() {
  DocumentApp.getUi() // Or DocumentApp or FormApp.
      .createMenu('AdvancedFind&Replace')
      .addItem('Remove Kindle HTML', 'findAndReplace')
      .addToUi();
}

// In-Document Find and Replace

function findAndReplace() {
  var body = DocumentApp.getActiveDocument().getBody();
    body.replaceText("Read more at location (\d*)   • Delete this highlight\nAdd a note", "");
      }

但是,当我运行它时,它不会替换文本。我认为这是REGEX的问题,因为当我运行此代码时,它可以工作:

function replaceBat() {
  var body = DocumentApp.getActiveDocument().getBody();
    body.replaceText("BBat", "BBAat REPLACEMENT SUCCESSFUL");
      }

非常感谢任何帮助,谢谢!

4 个答案:

答案 0 :(得分:2)

问题是Docs正则表达式不支持“/ d”匹配任何数字或“/ s”匹配任何空格字符,但它 支持“[[:space: ]]“用于匹配任何空格字符!

以下语法在我的文档中有效:

// In-Document Find and Replace

function findAndReplace() {
  var body = DocumentApp.getActiveDocument().getBody();
  body.replaceText("^Read more at location [0-9]*   • Delete this highlight[[:space:]]Add a note", "");
      }

我在https://www.google.com/support/enterprise/static/postini/docs/admin/en/admin_ee_cu/cm_regex.html

找到了[[:space:]]语法

答案 1 :(得分:1)

它看起来像Google Docs&现在,表格允许您在搜索文本时原生使用正则表达式。

只需打开原生搜索功能,您就可以找到使用正则表达式的选项。

regex search functionality in google docs

您可以在此处找到更多信息:https://support.google.com/docs/answer/62754

答案 2 :(得分:0)

根据documentation,某些模式可能不起作用:

  

JavaScript正则表达式功能的子集不完整   支持,例如捕获组和模式修饰符。

请参阅regex specifications in GoogleDocs here,但并未说明支持\d。所以,试试这个正则表达式:

^Read more at location [0-9]* • Delete this highlight[[:space:]]Add a note

或者

^Read more at location [0-9]*[^[:alpha:]]*Delete this highlight[[:space:]]Add a note

答案 3 :(得分:0)

正则表达式不以引号开头和结尾;一个字符串。你的替换是寻找文字字符串,而不是正则表达式。

尝试:

body.replaceText(/Read more at location (\d*)   • Delete this highlight\nAdd a note/, "");

要获取所有实例,请添加g标志:

body.replaceText(/Read more at location (\d*)   • Delete this highlight\nAdd a note/g, "");