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

Wyrażenie regularne POMOCY

0 głosów
513 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 (283,300 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 309 wizyt
pytanie zadane 21 sierpnia 2018 w Java przez kingkushlee Gaduła (3,960 p.)
0 głosów
1 odpowiedź 526 wizyt
pytanie zadane 5 kwietnia 2018 w PHP przez hiper007 Stary wyjadacz (11,270 p.)
0 głosów
1 odpowiedź 270 wizyt
pytanie zadane 20 kwietnia 2019 w PHP przez hiper007 Stary wyjadacz (11,270 p.)

93,741 zapytań

142,676 odpowiedzi

323,294 komentarzy

63,322 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

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...