Regex ulica bez numerów

0

Cześć mam problem pobieram Stringa z adresem: np.

String address1 = ul. Kolejowa 23;
String address2 = ul. Sezamkowa 56a;
String address3 = ul. Szybka 56c;

I chce regexem zostawić tylko (bez spacji na końcu)
ul. Kolejowa
ul. Sezamkowa
itp. Bez numerów i wszystkiego co po nich.
Jak powinien wyglądać ten regex i czy da się to zrobić replaceAll ?

0

mozesz z trim() powalczyć

2

(ul\. [\w\s]+) \d?.*

0

Przy takiej metodzie to nie działa.


private String getCorrectText(String regex, String text) {
    return text.replaceAll(regex, "");

Dlatego pytałem, czy można to zrobić replaceAll Czy inaczej.

0

Ale czemu chcesz jakimś replace co robić? Przeleć matcherem i wybierz listę wszystkich pasujących ciągów.

1

Jeśli chcesz zamienić ciąg znaków poza ul. (lub al., pl.) oraz nazwą ulicy na pusty ciąg znaków – jak rozumiem ciało metody – musisz dokładnie określić, jaki format ma mieć to, co chcesz zamienić. Musisz wiedzieć, że np. na pewno będą cyfry lub że nie może być ukośnika (jak zauważył @jarekr000000).

Jeśli przyjmiemy, że po nazwie ulicy może pojawić się spacja oraz liczba z opcjonalną literą na końcu, następnie opcjonalnie ukośnik z liczbą, następnie średnik, to można tak:

/ \d*[a-zA-Z]?(\/\d+)?;$/

Brzmi to tak: "Dopasuj taką część ciągu znaków, która w pewnym momencie rozpoczyna się od spacji, następnie posiada zero lub więcej (*) cyfr (\d), następnie opcjonalnie (?) posiada jedną małą (a-z) lub wielką (A-Z) literę alfabetu angielskiego, następnie opcjonalnie (?) posiada grupę: ukośnik (\/), a za nim co najmniej jedną (+) cyfrę (\d), następnie posiada średnik, i do tego ta część kończy ciąg znaków ($)". Uwaga: za pierwszym / jest spacja.

Dopasowuje to poprawnie części następujących ciągów znaków:

ul. Kolejowa 23432432a/1143432;
al. Kolejowe 43243242/0;
pl. Kolejowy 0C;

Sprawdzić można: https://regex101.com/


UPDATE: co do polskich znaków, trzeba by się zastanowić.

0

Dziękuję bardzo za odpowiedzi. Próbuje to zrobić matcherem tak jak mówi @Shalom, ale mam problem, bo nie widzi bi biblioteki java.util.regex.Pattern I nie mogę zrobić Pattern pattern = new Pattern.compile(regex); Jakieś pomysły IDE Eclipse Neon. Nic nowszego z Eclipsów nie współpracowało mi z Mavenem. Chyba, że można to zrobić jakoś bez matchera.

1

java.util.regex.Pattern jest od wersji javy 1.4 - więc raczej nie podejrzewam Cię, ze masz tak starą jak 1.3. Raczej masz nie skonfigurowane JDK i generalnie nic w javie nie możesz napisać. Strzelam.

3

new Pattern.compile(regex) takie coś to nie zadziała ;] Wywal to new.

1 użytkowników online, w tym zalogowanych: 0, gości: 1