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