【发布时间】:2013-02-04 17:19:03
【问题描述】:
我正在测试新的 python regex 模块,它允许模糊字符串匹配,到目前为止,它的功能给我留下了深刻的印象。但是,我在使用模糊匹配处理某些例外时遇到了麻烦。以下是一个很好的例子。我想要ST LOUIS,以及ST LOUIS 在编辑距离为1 内的所有变体以匹配ref。但是,我想对这条规则做一个例外:编辑不能包含在包含字母N、S、E 或W 的最左侧字符的左侧插入。在以下示例中,我希望输入 1 - 3 与 ref 匹配,而输入 4 则失败。但是,使用以下ref 会使其匹配所有四个输入。熟悉新正则表达式模块的人是否知道可能的解决方法?
input1 = 'ST LOUIS'
input2 = 'AST LOUIS'
input3 = 'ST LOUS'
input4 = 'NST LOUIS'
ref = '([^NSEW]|(?<=^))(ST LOUIS){e<=1}'
match = regex.fullmatch(ref,input1)
match
<_regex.Match object at 0x1006c6030>
match = regex.fullmatch(ref,input2)
match
<_regex.Match object at 0x1006c6120>
match = regex.fullmatch(ref,input3)
match
<_regex.Match object at 0x1006c6030>
match = regex.fullmatch(ref,input4)
match
<_regex.Match object at 0x1006c6120>
【问题讨论】:
-
你试过
(?<=[^NSEW]|^)(ST LOUIS){e<=1} -
@Some1.Kill.The.DJ:应该是一样的效果……不,你去掉了他需要的模糊匹配部分。
-
@nhahtdh 嗯..编辑了它..但我猜模糊匹配不会在环视中实现..
-
您考虑过简单的两遍方法吗?
标签: python regex pypi-regex