我试图将我的笔记从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");
}
非常感谢任何帮助,谢谢!
答案 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, "");