繁体   English   中英

比较 Node.js 中的两个 RegEx 对象

[英]Comparing two RegEx objects in Node.js

提示:本站为国内最大中英文翻译问答网站,提供中英文对照查看,鼠标放在中文字句上可显示英文原文

我正在使用 NodeRED 对从 Microsoft Azure 认知服务上的图像分析 (OCR) 创建的字符串执行一些逻辑。 图像分析不允许任何模式匹配/输入模式。

生成的字符串(我们称它为“A”)有时会略微错误地解释字符,典型的是“l”=“1”或“s”=“5”。

生成的字符串可以是仅有的几种不同格式之一,为了争论起见,可以说:

  1. [阿兹]{4,5}
  2. [广告]{3}[0-9]{1,2}
  3. [0-9][az]{4}

我需要做的是确定解释后的字符串 ('A') 最接近于('1'、'2' 或 '3')的格式。 一旦确定了这一点,我就计划调整被误解的字符,并希望留下一个(接近)完美的字符串。

我最初的计划是将“A”转换为 RegEx - 所以如果“A”返回为“12345”,我会将其更改为 RegEx object [1|l][2|z]34[5|s],比较这个 object 到 RegEx 对象,希望一个会作为匹配返回。

实际上,解释后的字符串更像是 8 个字母数字和五个不同的(相当复杂的)RegEx 可能性,但为了这个问题的目的,我试图简化问题。

所以问题是:是否可以通过这种方式比较 RegEx? 有没有人对如何改进这种图像分析有任何其他建议?

谢谢

这是一个使用笛卡尔积来比较字符串以寻找可能匹配项的解决方案。 测试字符串是'abclz' ,可以匹配pattern1pattern2

 const cartesian = (...a) => a.reduce((a, b) => a.flatMap(d => b.map(e => [d, e].flat()))); const charMapping = { '1': ['1','l'], 'l': ['1','l'], '2': ['2','z'], 'z': ['2','z'], '5': ['5','s'], 's': ['5','s'] }; const buckets = { pattern1: /^[az]{4,5}$/, pattern2: /^[ag]{3}[0-9]{1,2}$/, pattern3: /^[0-9][az]{4}$/ }; const input = 'abclz'; console.log('input:', input); let params = input.split('').map(c => charMapping[c] || [c]); let toCompare = cartesian(...params).map(arr => arr.join('')); console.log('toCompare:', toCompare); let potentialMatches = toCompare.flatMap(str => { return Object.keys(buckets).map(pattern => { let match = buckets[pattern].test(str); console.log(str, pattern + ':', match); return match? str: null; }).filter(Boolean); }); console.log('potentialMatches:', potentialMatches);

Output:

input: abclz
toCompare: [
  "abc12",
  "abc1z",
  "abcl2",
  "abclz"
]
abc12 pattern1: false
abc12 pattern2: true
abc12 pattern3: false
abc1z pattern1: false
abc1z pattern2: false
abc1z pattern3: false
abcl2 pattern1: false
abcl2 pattern2: false
abcl2 pattern3: false
abclz pattern1: true
abclz pattern2: false
abclz pattern3: false
potentialMatches: [
  "abc12",
  "abclz"
]
问题未解决?试试本站强大的搜索功能,搜索: 比较 Node.js 中的两个 RegEx 对象
比较两个正则表达式对象

[英]Comparing two regex objects

我有两个已经过测试和工作的正则表达式值: 和 现在,我需要比较两个正则表达式值是否匹配。 (?<= \\ binput \\ s)(\\ w +)获得“服务策略输入”之后的单词,而(?<= \\ bpolicy-map \\ s)(\\ w +)获得“ polic ...

node.js将两个数组与对象进行比较

[英]node.js compare two arrays with objects

我需要从mongo数据库中删除所有文档,这些文档不存在于带有对象的新数组中。 所以我有对象数组: 并且我有通过调用Model.find({})获得的带有db值的数组。 因此,现在我以“直接”方式进行操作: 但是它阻塞了整个应用程序,而且速度很慢,因为我的items数组和数据库 ...

使用node.js比较两个对象

[英]compare two objects using node.js

我正在尝试使用node.js比较两个对象。 即在下面的代码中比较功能和功能1 }); console.log(feature)打印以下值 和 console.log(features1)打印 这些印刷值不相等。 使用node.js我如何比较这些输出值是 ...

比较 Node.js 中两个大文件的最佳实践

[英]Best practice for comparing two large files in Node.js

我想比较两个大文件(5GB+),看看它们是否相同。 我考虑的一种解决方案是使用加密进行散列,然后比较散列。 但这将花费很多时间,因为我将不得不通过整个文件 go 而不是在发现差异时停止。 我认为的另一个解决方案是在文件与fs.createReadStream()流式传输时比较文件,并在发现差异时中断 ...

使用Node.js的一,二,三等正则表达式

[英]Regex for one, two, three etc using Node.js

我正在研究正则表达式并面临一个问题。 我无法在node.js中使用正则表达式在字符串中找到一个,两个,三个,四个等。 示例:字符串包含第1章或第1章的时间。 我能找到1而不是1。 如何用文字查找数字? 任何人都可以帮助我吗? ...

Node.js正则表达式不起作用

[英]Node.js regex not working

我对此代码有疑问: var regex = new Regex(/test/); console.log(regex.test("das ist ein test")); // false?? 实际上,我只是在尝试在字符串中搜索字符串。 应该不区分大小写。 但是我所有尝试过的正则 ...

node.js 和 javascript 中的正则表达式

[英]regex in node.js and javascript

我有这个数组数组,我想遍历它并给我所有没有“@”、标点符号和主题标签的单词。 然而,我的正则表达式正在从数组中完全删除一些单词,我不知道为什么。 ...

Bcrypt不一致地比较Node.js中的密码

[英]Bcrypt not consistently comparing passwords in Node.js

我现在正在使用bcrypt在两个不同的程序中比较相同的plainTextPassword和哈希,一个告诉我密码匹配,另一个告诉我密码不匹配。 在问题文件中: 我正在复制平原文本密码和哈希的记录值,并将它们粘贴到以下代码中: 并且返回的是true,而不是false,就像第一个 ...

合并node.js中的对象

[英]Merging objects in node.js

我有一些对象试图在Node.js中将它们合并在一起,第一个对象的格式如下 { ids : [id, id, id, ....]} 其余对象的格式如下 我需要以类似于此格式的方式合并它们 我想知道是否可以在nodejs中做到这一点? ...

在node.js中合并对象

[英]Combine objects in node.js

我的node.js应用程序从外部API接收两个json对象。 第一个对象是按天数的天气数据,其中的键是Unix时间戳记: 第二个对象是这几天的小时数天气(如果上面的对象有3天,则此对象中有3 * 24个键): 我需要结合这两个对象:从第二个对象中获取带有小时的数据,并从第一个对 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2023 STACKOOM.COM