标签: tre-library

模糊正则表达式

在我的工作中,我得到了很好的结果,使用了近似字符串匹配算法,如Damerau-Levenshtein距离,使我的代码不易受到拼写错误的影响.

现在我需要将字符串与简单的正则表达式匹配TV Schedule for \d\d (Jan|Feb|Mar|...).这意味着字符串TV Schedule for 10 Jan应返回0,同时T Schedule for 10. Jan应返回2.

这可以通过在正则表达式中生成所有字符串(在这种情况下为100x12)并找到最佳匹配来完成,但这并不实用.

您有任何想法如何有效地做到这一点?

regex string fuzzy-search fuzzy-comparison tre-library

47
推荐指数
2
解决办法
2万
查看次数

使用TRE近似于python中的RegEx:奇怪的unicode行为

我试图在python中使用TRE -library来匹配拼写错误的输入.
重要的是,它确实能很好地处理utf-8编码的字符串.

一个例子:
德国首都的名字是柏林,但是从发音来看它是一样的,如果人们会写"Bärlin"

它到目前为止工作,但如果非ASCII字符位于检测到的字符串的第一个或第二个位置,则范围和检测到的字符串本身都不正确.

# -*- coding: utf-8 -*-
import tre

def apro_match(word, list):
    fz = tre.Fuzzyness(maxerr=3)
    pt = tre.compile(word)
    for i in l:
        m = pt.search(i,fz)
        if m:
            print m.groups()[0],' ', m[0]

if __name__ == '__main__':
    string1 = u'Berlín'.encode('utf-8')
    string2 = u'Bärlin'.encode('utf-8')    
    string3 = u'B\xe4rlin'.encode('utf-8')
    string4 = u'Berlän'.encode('utf-8')
    string5 = u'London, Paris, Bärlin'.encode('utf-8')
    string6 = u'äerlin'.encode('utf-8')
    string7 = u'Beälin'.encode('utf-8')

    l = ['Moskau', string1, string2, string3, string4, string5, string6, string7]

    print '\n'*2
    print "apro_match('Berlin', l)"
    print "="*20 …
Run Code Online (Sandbox Code Playgroud)

python regex fuzzy-comparison tre-library

5
推荐指数
1
解决办法
1088
查看次数

从php加载c库

在最近的一个项目中,我真的需要lib tre匹配库.

然而,该项目是在PHP,并没有该库的PHP绑定.

我试图谷歌如何为c库创建一个接口,但我找到的只是dl加载只有php扩展的接口的功能.

我错过了什么?

php c interface tre-library

3
推荐指数
1
解决办法
2155
查看次数