Regex 最近模式匹配

Regex 最近模式匹配,regex,Regex,我试图在文本中识别引用。我可以使用LEX来定义和匹配引用模式。然而,这只有在引用正确时才有效。文档中往往有许多细微的错误 这些变体通常不是speling-eror。最常见的错误是缺少标点或引用元素 问题:是否有一些有效的表驱动方法来进行密切匹配?莱克斯的可能变种?或者可能是一种LEX编程技术(比如YACC中的错误)。重新提出这个问题,因为我发现没有人回答你 使用普通正则表达式引擎:否 正如您可能已经发现的,对于大多数引擎,regex并不是进行紧密匹配或任意单词或短语的最佳工具。当然,在最基本的层

我试图在文本中识别引用。我可以使用LEX来定义和匹配引用模式。然而,这只有在引用正确时才有效。文档中往往有许多细微的错误

这些变体通常不是speling-eror。最常见的错误是缺少标点或引用元素


问题:是否有一些有效的表驱动方法来进行密切匹配?莱克斯的可能变种?或者可能是一种LEX编程技术(比如YACC中的错误)。

重新提出这个问题,因为我发现没有人回答你

使用普通正则表达式引擎:否

正如您可能已经发现的,对于大多数引擎,regex并不是进行紧密匹配或任意单词或短语的最佳工具。当然,在最基本的层次上,像
\bs?他\b
这样的东西会找到
he
she
。。。但要在一个单词(如
interactive
)中找到所有相近的匹配项,您必须生成一个正则表达式,该正则表达式在单词中引入了许多排列。。。既没有效率也没有效果

一个例外

我知道的一个例外是Matthew Burnett的Python
[regex][1]
模块。首先,它是一个很棒的引擎,是我所知道的支持无限宽度lookbehind的仅有两个引擎之一(使用.NET)。(JGSoft也支持它,但它与语言无关。)

这个引擎有一个
fuzzymatch
模式,它可能正是你想要的。您可以提供一个“成本等式”(替换的最大数量等)

您必须将Python连接到您的数据。。。可能有一个模块可用于此

这是文件的摘录

正则表达式通常尝试精确匹配,但有时是近似匹配, 或“模糊”,则需要匹配,用于文本 搜索可能包含插入、删除或删除形式的错误 替换字符

模糊正则表达式指定允许的错误类型,以及, (可选)最小值和最大值或仅最大值 每种类型的允许数量。(您不能仅指定最小值。)

3种错误类型为:

插入,由“i”删除表示,由“d”替换表示, 以“s”表示

此外,“e”表示任何类型的错误

正则表达式项的模糊性在后面的“{”和“}”之间指定 这个项目

示例:

foo完全匹配“foo”

(?:foo){i}匹配“foo”,允许插入

(?:foo){d}匹配“foo”,允许删除

(?:foo){s}匹配“foo”,允许替换

(?:foo){i,s}匹配“foo”,允许插入和替换

(?:foo){e}匹配“foo”,允许出现错误

如果指定了某种类型的错误,则未指定任何类型的错误 将不被允许

在下面的示例中,我将省略该项,只编写 模糊性

{i