gpt4 book ai didi

java - 允许缺失字符的正则表达式

转载 作者:行者123 更新时间:2023-12-02 12:45:16 24 4
gpt4 key购买 nike

我正在尝试找到一种方法来确定字符串是否至少包含特定顺序的 n 个字符。

我正在处理大量手写数据,打字错误的数量非常疯狂。

我需要在一个大字符串中查找文本部分,如下所示:

irrelevant text MONKEY, CHIMP: more irrelevant text

我需要找到猴子、黑猩猩:

这种错误输入的方式非常疯狂。这是一个额外奇怪的例子:

MonKEY , CHIMp :

我已经在我的正则表达式中找到了所有这些出现的地方。可能不是最好的解决方案,但它是:

 (m|M)(o|O)(n|N)(k|K)(e|E)(y|Y),?\s+(c|C)(h|H)(i|I)(m|M)(p|P)(\s+)?:

看起来有点奇怪,但确实有效。

不幸的是,奇怪的事情还不止于此。我需要修改此正则表达式,以便它还允许每个单词中缺少 1 个字母。

所以我需要修改这个正则表达式,以便它也适用于以下内容:

MonKEY , CIMp :

onKEY , ChIMp :

onKEY , CIMp :

我认为应该有一种方法告诉正则表达式它应该需要 wordlength-1 精确的字符数来匹配。

有没有简单的方法可以做到这一点?

我一直在研究 {4, },但我不确定这是正确的方向,或者是否可以应用于此处。

预先感谢,彼得

最佳答案

使用纯正则表达式,那么你能做的最好的事情就是(添加空格以提高可读性):

/
^
(
monkey\s*,?\s*chimp\s*:
|
onkey\s*,?\s*chimp\s*:
|
mnkey\s*,?\s*chimp\s*:
|
...
)
$
/ix

但是,这是一种非常冗长的方法,并且仍然无法解释各种其他模糊匹配,例如 "Monkey, Chinp:""Monkey; Chimp: “

<小时/>

您可以采取的另一种方法是首先检查字符串的长度:

/^\w{10,15}$/

然后然后对其执行一些非常模糊的匹配:

/m?o?n?k?e?y?\s*,?\s*c?h?i?m?p?\s*:/i

但是,您需要小心,因为匹配列表中可能会包含一些奇怪的结果,例如:

"mon      c:"
<小时/>

我建议采取不同的、非正则表达式的方法来利用 Levenshtein Distance图书馆。这将允许您设置“字符串需要与 Monkey, Chimp 匹配的紧密程度”的通用边界

关于java - 允许缺失字符的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44783627/

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