2016-07-27 15 views
6

Mam bazę danych CSV zawierający nazwiska, adresy itpandroid java regex mecz wszystkich, ale jedna postać

Teraz będę szukać w moim Android app na coś, powiedzmy, adres, a następnie wyświetlić inne zapisy związane z to - nazwa, telefon ...

Problem polega na tym, że w CSV niektóre wpisy zawierają brakujące znaki, a zamiast nich są białe spacje - na przykład "G rmany Dresden" (z białą spacją zamiast " e ")

Niestety, baza danych jest często aktualizowana i nie mogę jej poprawić za każdym razem ręcznie.

Jak mogę dopasować "Niemcy Drezno", "G rmany Drezno", "Germa y Drezno" itp., Gdy wyszukuję hasło "Niemcy"?

Przypuszczam, że musi być limit znaków niedopasowane, więc załóżmy, że nie ma więcej niż dwa - przynajmniej nigdy nie widziałem więcej niż tego

+0

Trzeba bardziej precyzyjną definicję tego, co do meczu. Skoro "Germa y" pasuje do "Niemiec", czy "G" jest odpowiednim dopasowaniem? Co dokładnie pasuje do twojej sytuacji? – m0skit0

+0

ostatnia zmiana była nieprawidłowa - patrz zaktualizowana wersja – Vladimir

Odpowiedz

4

pierwszą rzeczą, która przychodzi do głowy jest Levenshteina odległość (ci "szukam czegoś z odległości 1 od Niemiec, oprócz wstawiania i usuwania). Nie można tego zrobić bezpośrednio za pomocą wyrażenia regularnego, ale można programowo wygenerować wyrażenie regularne.

Jest inna odpowiedź tutaj, że może być użytkowania: Levenshtein distance in regular expression

+1

Nigdy nie wiedziałem o odległości Levenshteina, dziękuję za informacje :) – m0skit0

+0

Odległość Levenstein powinna załatwić sprawę - dzięki! – Vladimir