正则表达式 - 将文本的子字符串与模式的子字符串

时间:2016-07-12 17:38:55

标签: python regex string-matching fuzzy-search

所以我处于反直觉的境地,我想得到一些建议。 大多数情况下,我只是进行一些字符串匹配,使用提取的字符串作为正则表达式的模式。虽然通常我可以通过模糊的正则表达式搜索来完成这一点,但有时我会遇到这种情况:

我们说我从一些数据中提取了以下模式(Python正则表达式包)。

pattern = 'the quick brown fox jumps over the lazy dog'

现在,我需要让它匹配一个看起来像这两个中的任何一个的字符串,尽管大多数是第一个。

string = 'quick brown fox jumps over the lazy'
string2 = 'and then a quick brown fox jumps onto the cat'

由于开始和结尾的角色,显然我不会得到一场比赛,如果我尝试做我喜欢做的事情,目前看起来像这样:

if re.search("("+pattern+"){e<=2}", string):
    print(True)

不幸的是,错误计数不一致,并且可能有许多字符导致和/或结束模式。鉴于我不知道先验如果我遇到这个问题,如果模式的足够子字符串与之匹配,我还能做些什么来获得匹配?我考虑了Levenshtein距离来解释这一点,但是它需要设置一些阈值,这个阈值似乎对要匹配的字符串的长度非常敏感(在按长度标准化之后),所以它最终只是对我是否是一个折腾我希望得到一个匹配。还有其他选择或更好的方法来规范化结果吗?

此外,我不能做的一件事就是始终采取最佳匹配,因为有时正确的条目实际上并没有出现在我正在检查的文本中。

我在regex软件包中遗漏了哪些内容可以帮助解决这个问题?

1 个答案:

答案 0 :(得分:0)

Ouf,花了我很长时间才得到这个(我不是python开发人员),但这应该可以解决问题:

agent = Mechanize.new
agent.user_agent_alias = 'Mac Safari'
page = agent.get ('http://double14.com/shopdetail/000000018693/')
puts page.images

在这里测试:http://www.pythontutor.com/visualize.html#mode=edit

enter image description here