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

我目前有一个函数来获取一个字符串,将其分解为句子,然后提取包含用户定义关键字的句子并返回它们:


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 的数组,我只是遍历数组并获取每个文档的文本


一只名叫tom的猫
浏览 96回答 2
2回答

互换的青春

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

慕森王

您提供的替换replace(/([.])\s*(?=[A-Z])/g, "$1|")对我不起作用==没有更改就得到了相同的字符串...这个怎么样:("|"+text.toLowerCase().replace(/\s/g, "|")+"|").includes("|"+word.toLowerCase()+"|")或这个:("|"+text.toLowerCase().split(" ").join("|")+"|").includes("|"+word.toLowerCase()+"|")
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript