为了账号安全,请及时绑定邮箱和手机立即绑定

Javascript优化正则表达式函数以从包含关键字的字符串中提取句子

Javascript优化正则表达式函数以从包含关键字的字符串中提取句子

一只名叫tom的猫 2022-10-27 15:34:52
我目前有一个函数来获取一个字符串,将其分解为句子,然后提取包含用户定义关键字的句子并返回它们:function getSentencesWithWord(word, text) {    let sentenceArray = text.replace(/([.])\s*(?=[A-Z])/g, "$1|").split("|")    return sentenceArray.filter(sentence => sentence.includes(word))}目前,此功能有效。但是,我需要使用此功能搜索的文本量非常大;它正在搜索大约 30 个 google 文档,每个文档最多可达 75 页,并且搜索某些术语(例如单词“the”)可能需要一分钟才能完成该功能。有没有更优化的方法来搜索和提取这么多文本?编辑:因为有人在评论中问,word变量只是从 HTML 页面上的文本输入中获得的字符串,而text变量是通过 Google Apps 脚本中的此函数获得的字符串:function getText(docID){    let doc = DocumentApp.openById(docID);    let textToSearch = doc.getBody().getText();    return textToSearch;}我有一个需要访问的所有 google 文档 ID 的数组,我只是遍历数组并获取每个文档的文本
查看完整描述

2 回答

?
互换的青春

TA贡献1797条经验 获得超6个赞

无法使用 Google Apps Script 找到更快的方法来实现这一点,所以我只是回到 Node.js 并最终使用 Google Drive API 将文件下载为 .txt 文件,这些文件要小得多,因此我可以搜索他们现在快得多



查看完整回答
反对 回复 2022-10-27
?
慕森王

TA贡献1777条经验 获得超3个赞

您提供的替换replace(/([.])\s*(?=[A-Z])/g, "$1|")对我不起作用==没有更改就得到了相同的字符串...

这个怎么样:

("|"+text.toLowerCase().replace(/\s/g, "|")+"|").includes("|"+word.toLowerCase()+"|")

或这个:

("|"+text.toLowerCase().split(" ").join("|")+"|").includes("|"+word.toLowerCase()+"|")



查看完整回答
反对 回复 2022-10-27
  • 2 回答
  • 0 关注
  • 83 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信