gpt4 book ai didi

javascript - 在忽略空格的文本中搜索和匹配

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:14:44 25 4
gpt4 key购买 nike

我已经在我的数据库中索引了 PDF 文件的文本,但有时文本不干净,单词之间有空格:

var text = 'C or P ora te go V ernan C e report M ANA g EMENT bO A r D AND s u PE r V is O r y bO A r D C OMM i TTEE s The Management Board has not currently established any committees.';

我想为我的用户做一个前端搜索引擎,但我需要知道每个搜索的START和END位置(基于原文,带空格)。

我可以用正则表达式做到这一点,例如,如果我这样做:

text.toLowerCase().search(/m ? a ? n ? a ? g ? e ? m ? e ? n ? t/);

我在起始位置字母 36 上找到“管理”这个词。现在,我想知道这个词的“结束位置”(因为我不知道这个词有多少空格,所以我不知道多少个字母),我希望搜索是多重匹配的(给我多个结果的开始/结束位置)。

你能帮我吗?同样,根据原文确定每个单词的开始/结束位置对我来说非常重要,删除空格然后搜索对我来说不是一个好的解决方案。

我也很想知道我是否可以在没有正则表达式的情况下做到这一点。

谢谢!

最佳答案

这个演示可能会有所帮助:

> text.toLowerCase().match(/m *a *n *a *g *e *m *e *n *t/)
[ 'm ana g ement',
index: 36,
input: 'c or p ora te go v ernan c e report m ana g ement bo a r d and s u pe r v is o r y bo a r d c omm i ttee s the management board has not currently established any committees.' ]

(我修改了您的正则表达式以在每个字母之间使用 ' *',以匹配包括 0 在内的任意数量的空格。您的 ' ? ' 示例将仅匹配 1或每个字母之间有 2 个空格。)

如果正则表达式匹配,使用.match 方法返回捕获的表达式和索引(如上所示),否则返回null。您应该能够使用它来执行以下操作:

const matches = text.toLowerCase().match(/m *a *n *a *g *e *m *e *n *t/);
if (matches) {
const start = matches.index;
const end = matches.index + matches[0].length - 1;
}

关于javascript - 在忽略空格的文本中搜索和匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49299857/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com