2016-07-27 15 views
6

Tôi có một cơ sở dữ liệu CSV chứa tên, địa chỉ, vvandroid java regex trận đấu tất cả ngoại trừ một ký tự

Bây giờ tôi sẽ tìm kiếm trong App Android của tôi cho một cái gì đó, chúng ta hãy nói địa chỉ và sau đó hiển thị các hồ sơ khác liên quan đến nó - tên, điện thoại ...

Vấn đề là, trong CSV một số mục có ký tự bị thiếu và thay vào đó có các khoảng trắng - ví dụ "G rmany Dresden" (có khoảng trắng thay vì " e ")

Thật không may, cơ sở dữ liệu được cập nhật thường xuyên và tôi không thể sửa nó mỗi lần thủ công.

Làm cách nào để khớp "Đức Dresden", "G rmany Dresden", "Germa y Dresden", v.v ... khi tôi tìm kiếm "Đức"?

Tôi cho rằng phải có một giới hạn của các nhân vật không phù hợp, vì vậy chúng ta hãy giả sử không có hơn hai - ít nhất là tôi chưa bao giờ thấy nhiều hơn thế

+0

Bạn cần định nghĩa chính xác hơn về nội dung phù hợp. Vì 'Germa y' là một trận đấu phù hợp với' Đức', là 'G' một trận đấu phù hợp? Đâu là một trận đấu phù hợp trong hoàn cảnh của bạn? – m0skit0

+0

chỉnh sửa cuối cùng là sai - xem bản sửa đổi cập nhật – Vladimir

Trả lời

4

Việc đầu tiên mà nói đến cái tâm là khoảng cách levenshtein (bạn đang tìm kiếm một cái gì đó với khoảng cách 1 từ Đức, ngoài việc chèn và xóa). Bạn không thể làm điều đó trực tiếp với một regex, nhưng bạn có thể tạo ra các regex lập trình.

Có một câu trả lời khác ở đây có thể được sử dụng: Levenshtein distance in regular expression

+1

Không bao giờ biết về khoảng cách Levenshtein, cảm ơn bạn đã thông tin :) – m0skit0

+0

Khoảng cách Levenstein nên thực hiện thủ thuật - cảm ơn! – Vladimir

Các vấn đề liên quan