Regex ulica bez numerów

Regex ulica bez numerów
T9
  • Rejestracja:ponad 8 lat
  • Ostatnio:prawie 4 lata
  • Postów:55
0

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

Kopiuj
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 ?

edytowany 3x, ostatnio: tomaszek993
AK
Sprostuj projekt danych najszybciej jak się da. To ślepa uliczka
BC
  • Rejestracja:prawie 13 lat
  • Ostatnio:około 7 godzin
  • Postów:159
0

mozesz z trim() powalczyć

Shalom
  • Rejestracja:około 21 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
2

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


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
Zobacz pozostałe 3 komentarze
S9
@jarekr000000: jak dla mnie to większa magia niż Spring :D
jarekr000000
@scibi92: nawet dość trafne spostrzeżenie. Na początku tak naprawdę super łatwe i można dojść do przesady w używaniu (widziałem, nawet overregexping w javie, że o perlu nie wspomnę). Ale, któregoś pięknego dnia - przestaje Ci ten regexp działać i dowiadujesz się o (dynamic proxy) ?+ i terminach typu greedy, reluctant i possesive i świat przestaje być piękny i prosty.
Shalom
@jarekr000000: a tam greedy, potem dowiadujesz sie o rzeczach takich jak negative lookahead ;)
jarekr000000
@Shalom - jeszcze tam nawet nie dotarłem
Silv
A ja tam lubię wyrażenia regularne. Piękny przykład zawarcia całości dążeń do celu w niewielkiej objętości.
T9
  • Rejestracja:ponad 8 lat
  • Ostatnio:prawie 4 lata
  • Postów:55
0

Przy takiej metodzie to nie działa.

Kopiuj

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

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

Shalom
  • Rejestracja:około 21 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
0

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


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
Silv
Moderator Wiki
  • Rejestracja:ponad 10 lat
  • Ostatnio:prawie 3 lata
  • Lokalizacja:Warszawa
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:

Kopiuj
/ \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:

Kopiuj
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ć.


edytowany 6x, ostatnio: Silv
Silv
@tomaszek993: jak coś, edytowałem post.
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.

jarekr000000
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 2 godziny
  • Lokalizacja:U krasnoludów - pod górą
  • Postów:4707
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.


jeden i pół terabajta powinno wystarczyć każdemu
Shalom
popatrz uważnie co on tam woła ;)
Shalom
  • Rejestracja:około 21 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
3

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


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
PI
@tomaszek993: nie, to tylko Shalom

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.