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

Werbalne opisanie wyrazenia regularnego.

Object Storage Arubacloud
0 głosów
151 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 Ekspert (344,860 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 (155,460 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,003 wizyt
0 głosów
1 odpowiedź 170 wizyt
pytanie zadane 7 stycznia 2019 w Python przez Frezen Obywatel (1,330 p.)
0 głosów
1 odpowiedź 201 wizyt

92,580 zapytań

141,433 odpowiedzi

319,665 komentarzy

61,965 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

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy 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!

...