/ / dopasowywanie długich ciągów (głównie podobnych) do długich ciągów - regex, algorytm, dopasowywanie ciągów

dopasowywanie długich ciągów (w większości podobnych) z długimi łańcuchami - regex, algorytm, dopasowywanie ciągów znaków

Próbuję znaleźć najlepszy sposób na dopasowanie irozpoznać różne teksty licencji w plikach. Są to dość długie ciągi wielowierszowe (czasem 2 strony o wielkości liter) i jeśli są dopasowane, powinny być w większości takie same, z wyjątkiem kilku zmiennych (Nazwa, data, nieparzyste nowe wiersze, nieparzyste spacje). Moje pytanie brzmi: jaki jest najlepszy sposób dopasowania długich ciągów w jeszcze dłuższe ciągi? Czy użycie wyrażeń regularnych jest do tego uzasadnione (ogromne wyrażenie regularne, które zawierałoby cały tekst licencji z kilkoma symbolami wieloznacznymi dla elementów zmiennych)? Lub czy istnieje algorytm wyszukiwania / dopasowywania łańcucha, który byłby szczególnie dostosowany?

Odpowiedzi:

1 dla odpowiedzi № 1

Czytać o Najdłuższe wspólne podsekwencje 2 struny. Algorytm oparty na Programowanie dynamiczne


0 dla odpowiedzi nr 2

Większość bibliotek wyrażeń regularnych jest dostrojonaszybko w praktyce na rodzaju wyrażeń regularnych, które ludzie zwykle piszą, czasami ignorując rzadkie przypadki, w których można konstruować wyrażenia regularne, które powodują, że zajmują im strasznie dużo czasu. Jeśli wzór nie jest jednym z okropnych przypadków specjalnych, prawdopodobnie nie ma znaczenia, jak długo on trwa, ponieważ w praktyce większość miejsc, w których nie pasuje do tekstu, można rozpoznać po zaznaczeniu tylko kilku znaków tekst i wzór, a te niedopasowania są tam, gdzie czas płynie.

Jeśli chcesz mieć pewność dobrej wydajności, jaszukałby pojedynczego ciągu stałego tekstu (tak dużego, jak to możliwe), który musi istnieć we wszystkich formach licencji, szukał tego w plikach, a następnie ponownie sprawdzał kilka wystąpień tego w bardziej złożony sposób, aby sprawdzić, czy są prawdziwe pasuje czy nie. Ale jest bardzo prawdopodobne, że tak się właściwie stanie w praktyce, jeśli wykonasz zwykłe wyszukiwanie wyrażeń regularnych. Dlaczego nie pozwolić regexowi luźno na plikach lub ich podzbiorach i zobaczyć, jak długo to potrwa?