我正在开发一个脚本,该脚本能够对字符串中的某个模式进行近似匹配,只报告这些模式(它们可能重叠)开始的位置。
到目前为止,我获得了一个能够报告精确匹配位置的脚本,但对于近似匹配没有成功:
import re
stn = 'KLHLHLHKPLHLHLPHHKLHKLPKPH'
pat = 'KLH'
matches = re.finditer(r'(?=(%s))' % re.escape(pat), stn)
finalmatch= [m.start() for m in matches]
pos = ' '.join(str(v) for v in finalmatch)
print pos
这种情况下的结果是:0 17 但是如果脚本报告也近似匹配怎么办?即如果最大允许误差(容差或阈值)为1(在查询模式的任何位置),如何报告HLH、PLH、KLP、KPH的初始位置?
我已经尝试过像 Levenshtein 或 SequenceMatcher 这样的距离测量,但没有成功。
在此先感谢您的帮助。