gpt4 book ai didi

javascript - Javascript 中的反向正则表达式匹配

转载 作者:行者123 更新时间:2023-12-03 10:19:27 27 4
gpt4 key购买 nike

我有一个包含输入和输出的基本示例的文件:

[Database.txt]
Hello*==Hello. How are you?
How*are*you*==I am fine I guess.
Can you*die*==I can not die. I am software.

我将得到一个没有标点符号的输入字符串。

示例:“一百万年后你会死吗”

我试图将输入与“==”左侧的数据库的第一侧进行匹配,并返回与第一侧匹配的字符串的行的第二侧。因此,输入=“一百万年后你会死吗”,输出=“我不能死。我是软件。”

我必须使用 native JavaScript。这是我一直在做的个人项目的一部分,但在 4 个月内一直未能完成。它是独立自然语音引擎的一部分,可以下载文件,将其读取到变量中,并将其用作引用。我尝试过循环行、按“==”分割、str.match() 和许多其他内容的组合。我将处理不区分大小写的问题。任何帮助将不胜感激。

最佳答案

您可以将其拆分为一个数组,并将每个左侧放入一个正则表达式。

然后您可以运行一系列测试来查找匹配项。棘手的部分是您需要进行多项测试,而不仅仅是一个 super 正则表达式。我使用 [].some() 在找到第一个匹配项后终止。您可以使用过滤器更改某些并收集输出以获得多个匹配项。

var gaunlet=[],
str="[Database.txt]\n\
Hello*==Hello. How are you?\n\
How*are*you*==I am fine I guess.\n\
Can you*die*==I can not die. I am software.";

str.split("\n").forEach(function(a,b){
var r=a.split("==");
gaunlet[b]=[RegExp(r[0].replace(/\*/g,"[\\w\\W]*?"), "i"), r[1]];
});

function lookup(inp){
var out;
gaunlet.some(function(a){
if(a[0].test(inp)) return out=a[1];
});
return out;
}


alert(lookup("can you die in a million years?"));

fiddle :https://jsfiddle.net/joaze5u6/1/

我还在 js 捕获通配符的方式中编写了一个修复程序,[\w\W]*? 执行了 .*? 应该执行的操作,但没有执行js 中的 t...

关于javascript - Javascript 中的反向正则表达式匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29713343/

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