• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Wyrażenie regularne POMOCY

VPS Starter Arubacloud
0 głosów
307 wizyt
pytanie zadane 20 czerwca 2018 w Java przez fipooo Bywalec (2,880 p.)
Jak napisać wyrażenie regularne które będzie mi wyłapywać to co mam między 1 a 2 spacją. Np. mam w 1 linii coś takiego"costam TOCHCEWYLAPAC costam dalej jest". Aby wyłapało mi tylko to co jest między 1 a drugą spacją. Jak to zrobić.?
1
komentarz 20 czerwca 2018 przez Secrus Nałogowiec (32,880 p.)
moze potnij stringa po tych spacjach, i sprawdz tylko to srodkowe?
komentarz 20 czerwca 2018 przez Tomek Sochacki Ekspert (227,510 p.)
Albo ewentualnie można zrobić funkcję, która odetnie z ciągu znaki do napotkania pierwszej spacji, czyli odetnie "costam" i potem znowu wywołać ją na nowym już ciągu, co spowoduje odcięcie "TOCHCEWYLAPAC". Rozwiązań jest wiele, regexp też się da (dałem propozycję w odpowiedzi), pytanie jak wiele będzie takich operacji, jakich znaków się spodziewać w ciągu (czy poruszamy się tylko z Unicode BMP czy szerzej) itp. itd.

2 odpowiedzi

+1 głos
odpowiedź 21 czerwca 2018 przez Wiciorny Ekspert (269,120 p.)
wybrane 27 czerwca 2018 przez fipooo
 
Najlepsza

Sposoby na to masz dwa:  Na wstępie .

bo Java dzięki swojej bibliotece może to rozwiązać na 2 sposoby:

 * albo podejdziesz do przykładu na zasadzie wyrażenia regularnego

można też użyć split z regex 

String[] splited = str.split("\\s+");

-- pominie Ci wszystkie spacje 

i w tym wypadku trzeba by troszeczke pogdybać 

* albo użyjesz gotowej funkcjonalności split

np.

public class TestConsole {
   public static void main(String[] args) {
      String sampleString = "Apple Banana Carrot";
      String[] animals = sampleString.split(" ");
      int animalIndex = 1;
      for (String animal : animals) {
         System.out.println(animalIndex + ". " + animal);
         animalIndex++;
      }
   }
}

output:

1. Apple
2. Banana
3. Carrot

Konkluzja tego jest taka: możesz w takim razie takie zastosowania umieścić w warunku pęli, zależy od implementacji i wykonywać operacje do wystąpienia KOLEJNEGO wyrażenia ( w takim przypadku np,  posłużyć się mechanizmem kolejki ) . Dodać do kolejki element ( jakiś ) ... w momencie pierwszej spacji, tak długo jak odczytujesz slowo, a nie wystapiła żadna spacja- to pozostawiasz element w kolejce, przy wystąpieniu SPACJI usuwasz. 

Operacje wykonujesz tak długo jak kolejka nie jest pusta :) 

+1 głos
odpowiedź 20 czerwca 2018 przez Tomek Sochacki Ekspert (227,510 p.)
const str = "costam TOCHCEWYLAPAC costam dalej jest"

const result = str.match(/(?<=\x20)[^\x20]+(?=\x20)/);
result[0]; //"TOCHCEWYLAPAC"

Przykład w JavaScript bo Javy za bardzo nie znam (tylko w takim podstawowym stopniu) ale myślę, że łatwo sobie przerobisz. Generalnie zasadę przyjąłem taką:

wyszukaj dowolne znaki po za spacją, czyli [^\x20], 

po których znajduje się spacja (?=\x20),

i przed którymi znajduje się spacja: (?<=\x20)

Musisz tylko zobaczyć czy składnia lookbehind i lookahead w Java jest taka sama jak w JS bo przyznam szczerze, że nie pamiętam tego w tej chwili (ale chyba tak).

Podobne pytania

0 głosów
2 odpowiedzi 152 wizyt
pytanie zadane 21 sierpnia 2018 w Java przez kingkushlee Gaduła (3,960 p.)
0 głosów
1 odpowiedź 211 wizyt
pytanie zadane 5 kwietnia 2018 w PHP przez hiper007 Stary wyjadacz (11,270 p.)
0 głosów
1 odpowiedź 124 wizyt
pytanie zadane 20 kwietnia 2019 w PHP przez hiper007 Stary wyjadacz (11,270 p.)

92,454 zapytań

141,262 odpowiedzi

319,099 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...