2011-02-03 7 views
0

Étant donné deux ou plusieurs échantillons de texte, plus précisément des segments de code, quelle est la manière la plus efficace de détecter où les échantillons diffèrent et de former un motif correspondant à chaque échantillon?Détection de motifs dans les segments de code

Par exemple, étant donné les exemples suivants de code:

cd ~/workspaces/project/tmp1/bin 
rsync --recursive --progress /data/local/documents* data 

cd ~/workspaces/project/we32usZ/bin 
rsync --recursive --progress /data/local/lib* data 

cd ~/workspaces/project/oiususs/bin 
rsync --recursive --progress /data/local/usr* data 

Comment pourrais-je en déduire ce modèle (où varN $ indique une variable générique)?

cd ~/workspaces/project/$var1/bin 
rsync --recursive --progress /data/local/$var2* data 

Mon approche initiale est de comparer deux échantillons, la comparaison de chaque lettre ième jusqu'à ce qu'une différence se trouve, à la recherche pour la suite où la partie « variable » du texte se termine, puis répéter pour d'autres échantillons. Cependant, cela semble très inefficace, et suppose évidemment que les textes sont très similaires pour commencer. Y a-t-il un meilleur moyen?

Répondre

0

Pour quelque chose comme l'exemple que vous avez mentionné, une variation de multiple sequence alignment aiderait. Vous cherchez essentiellement des sous-chaînes conservées dans tous les segments de votre code via la programmation dynamique.