Próbuję utworzyć skrypt do przeprowadzania wyszukiwania rozmytego w buforze. Główną ideą jest pobranie danych i wstawienie .\{-}
między każdą parą znaków, np . foo
Staje się f.\{-}o.\{-}o
.
Działa to dość dobrze, ale pojawia się wiele nieprzystosowanych dopasowań. Myślę, że wyszukiwanie rozmyte powinno najpierw dać najkrótsze dopasowania. Rozważ następujący przykład:
public void put()
Wykonanie wyszukiwania rozmytego dla put
(tak, p.\{-}u.\{-}t
) dopasuje cały ciąg public void put
, ale krótsze put
w tym dopasowaniu byłoby bardziej przydatne.
Nie chciwy operator jest dobry w znajdowaniu meczów, które kończą się wcześniej, ale potrzebuję czegoś, co może jednocześnie preferować mecze rozpoczynające się później. Pod względem koncepcyjnym powinno być niechciane w obu kierunkach. czy to możliwe?
źródło
Odpowiedzi:
Nie ma wystarczającej liczby przykładów, ale myślę, że robi to, co chcesz.
będzie pasować
put
w twoim przykładzie zamiastpublic void put
. Zasadniczo.*
zmusza silnik regex do rozpoczęcia wyszukiwania łańcucha do tyłu, ponieważ.*
najpierw zużywa cały łańcuch, a następnie cewki, aby znaleźć najnowsze dopasowaniep.\{-}u.\{-}t
źródło
pouty puppet
która dałaby dwa dopasowania.