我正在测试新的python regex模块,该模块允许模糊字符串匹配,并且到目前为止已经对其功能印象深刻。但是,我在使用模糊匹配制作某些异常时遇到了麻烦。以下是一个例子。我希望ST LOUIS
以及编辑距离为1的ST LOUIS
的所有变体与ref
匹配。但是,我想对此规则设置一个例外:编辑不能包含最左边字符左侧的插入,其中包含字母N
,S
,E
或{{ 1}}。通过以下示例,我希望输入1 - 3匹配ref,输入4则失败。但是,使用以下W
会使其与所有四个输入匹配。熟悉新正则表达式模块的人是否知道可能的解决方法?
ref
答案 0 :(得分:3)
尝试使用否定前瞻:
(?![NEW]|SS)(ST LOUIS){e<=1}
(ST LOUIS){e<=1}
匹配符合其上的模糊条件的字符串。
您希望阻止它以[NSEW]
开头。对你来说,负向前瞻为你做(?![NSEW])
。
但是您所需的字符串已经以S
开头,您只想排除以S
开头添加到字符串开头的字符串。
这样的字符串将以SS
开头,这就是为什么它被添加到负向前瞻中。
请注意,如果您允许错误&gt; 1,这可能不会按预期工作。