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

Werbalne opisanie wyrazenia regularnego.

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
0 głosów
190 wizyt
pytanie zadane 8 czerwca 2017 w C i C++ przez Grzegorz Giera Początkujący (320 p.)

Hej! Potrzebuje słownie opisać wyrażenie regularne: 

/^ (( 25[0-5]|(2[0-4]|1{0,1}[1-9]|10 ){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[1-9]|10){0,1}[0-9] ) $/

  • (25[0-5]|(2[0-4]|1{0,1}[1-9]|10){0,1}[0-9])\.) - powinny się pojawić 3 cyfry 250 - 255 (25[0-5]) lub (|) trzy cyfry 200-249 (2[0-4]…[0-9]) lub 110-199 (1{0,1}[1-9] … [0-9]) lub 100-109 (1{0,1}[0-9] … [0-9]) lub 10-99([1-9]…[0-9]) lub 0-9 ([0-9]) po  których następuje kropka (\.)
  • powyższy punkt powtarza się trzy razy ({3,3})
  • (25[0-5]|(2[0-4]|1{0,1}[1-9]|10){0,1}[0-9])$/ - na końcu powinna się pojawić jeszcze raz cyfra w zakresie 0-255

Czy jeżeli opiszę je w powyższy sposób jest to poprawne? Pisałem to po swojemu totalnie.

2 odpowiedzi

0 głosów
odpowiedź 8 czerwca 2017 przez adrian17 Mentor (350,440 p.)
Chyba tak.

Można to jeszcze zwizualizować sobie np. w https://regexper.com/#%5E%20((%2025%5B0-5%5D%7C(2%5B0-4%5D%7C1%7B0%2C1%7D%5B1-9%5D%7C10%20)%7B0%2C1%7D%5B0-9%5D)%5C.)%7B3%2C3%7D(25%5B0-5%5D%7C(2%5B0-4%5D%7C1%7B0%2C1%7D%5B1-9%5D%7C10)%7B0%2C1%7D%5B0-9%5D%20)%20%24

(Natomiast używanie takiego regexa to ból, w zależności od zastosowania możliwe że prościej by było zrobić minimalną walidację, przeczytać ten adres IP i ręcznie sprawdzić czy wszystkie cztery wartości są <=255.)
komentarz 8 czerwca 2017 przez Grzegorz Giera Początkujący (320 p.)
Chciałbym być pewny czy tak sie powinno opisywać wyrażenia. Z tej stronki juz korzystałem zanim napisałem na forum sprawdzilem co mogłem :P

Kwestia jest taka że ten regex postał bardziej w celu nauki.
0 głosów
odpowiedź 9 czerwca 2017 przez mokrowski Mędrzec (156,320 p.)

Jeśli wiesz że optymalnym rozwiązaniem problemu będzie regexp (albo ćwiczysz), to bardzo pomaga świadomość faktu że C++ łączy string jeśli go podzielisz. Możesz dzięki temu opisać wyrażenie regularne. Dodatkowo (bo nie wiem z jakiej biblioteki korzystasz), warto sprawdzić czy regex w danej bibliotece nie wspiera trybu "jawne podawanie spacji", Wtedy taki regexp można komentować w kodzie.

Co do samego regexp'a, widać kilka miejsc do poprawy :-) Poprawić jednak można dopiero jeśli napiszesz dokładnie co chcesz osiągnąć.

Poniżej ideowo użycie takiego regexpa z komentarzem :-)

myRegex re("xxxx" // 4 iksy
           "[0-9]" // dowolna pojedyncza cyfra
           "\w"    // jeden znak słowa
);
// Co zostanie przekształcone do:
// myRegex re("xxxx[0-9]\w");

 

komentarz 9 czerwca 2017 przez Grzegorz Giera Początkujący (320 p.)
Przypadkowo zaznaczyłem C, C++. Samo wyrażenie piszę w javascript. Skorzystałem jednak z porady i napisałem coś takiego:

https://pastebin.com/wCDj4wD7

Bardzo proszę o opinie.

Podobne pytania

0 głosów
1 odpowiedź 1,061 wizyt
0 głosów
1 odpowiedź 206 wizyt
pytanie zadane 7 stycznia 2019 w Python przez Frezen Obywatel (1,330 p.)
0 głosów
1 odpowiedź 235 wizyt

93,166 zapytań

142,178 odpowiedzi

321,947 komentarzy

62,495 pasjonatów

Advent of Code 2024

Top 15 użytkowników

  1. 918p. - dia-Chann
  2. 902p. - Łukasz Piwowar
  3. 901p. - CC PL
  4. 894p. - Łukasz Eckert
  5. 716p. - Michał Telesz
  6. 664p. - Marcin Putra
  7. 649p. - Michal Drewniak
  8. 641p. - rafalszastok
  9. 641p. - rucin93
  10. 629p. - Piotr Aleksandrowicz
  11. 629p. - Adrian Wieprzkowicz
  12. 621p. - Dawid128
  13. 612p. - Mikbac
  14. 611p. - ksalekk
  15. 606p. - Mariusz Fornal
Szczegóły i pełne wyniki

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

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...