所以我处于反直觉的境地,我想得到一些建议。 大多数情况下,我只是进行一些字符串匹配,使用提取的字符串作为正则表达式的模式。虽然通常我可以通过模糊的正则表达式搜索来完成这一点,但有时我会遇到这种情况:
我们说我从一些数据中提取了以下模式(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软件包中遗漏了哪些内容可以帮助解决这个问题?
答案 0 :(得分:0)
Ouf,花了我很长时间才得到这个(我不是python开发人员),但这应该可以解决问题:
agent = Mechanize.new
agent.user_agent_alias = 'Mac Safari'
page = agent.get ('http://double14.com/shopdetail/000000018693/')
puts page.images