次のような35000個の値のリストipythonがあるとします。
a = ['235', '2589', '25896']
一致する文字列:
str = '258963548'
str2 = '258954213'
str3 = '258659652'
次に、これらの文字列をリストに一致させて、最も長い一致を見つけたいと思います。最初の文字列の結果は25896になり、2番目の一致は2589を返し、最後に最後の文字列は一致しませんでした。
この問題を解決するために正規表現を使用しましたが、各リストに一致するリストが約50セット、文字列が約200あるため、時間がかかります。
これが私のコードです:
def Matchit(str,b = []):
pattern = re.compile("(?P<mt>\S*)\S*\s+(?P=mt)")
ln = 0
res = -1
for a in b:
match = pattern.match(str + ' ' + a).group('mt')
if (len(match)>ln):
ln = len(match)
if(ln>2):
res = b[a]
return res
どんな助けでもありがたいです。