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

C# Wyrażenia Regularne - Bug?

Object Storage Arubacloud
0 głosów
212 wizyt
pytanie zadane 6 lutego 2020 w C# przez kubekszklany Gaduła (3,190 p.)

Witam. Chciałbym używając wyrażeń regularnych sprawdzić wyraz i jego długość. Mam taki wzór: ^([0-9A-Za-z]+-[0-9A-Za-z]+-[0-9A-Za-z]+).{2,4}$ i przykładowym działającym wyrazem jest ABC-abc-123. I czy jest mi ktoś w stanie wytłumaczyć jakim cudem długość podana w nawiasach jest liczona tylko dla ostatniego członu po pauzie, skoro całe wyrażenie jest w nawiasie? Sprawdza tylko długość ciągu 123 a nie całego ABC-abc-123. Mogę tam wstawić 10 nawiasów, a i tak sprawdzi długość ostatniego wyrazu op pauzie.

1 odpowiedź

0 głosów
odpowiedź 6 lutego 2020 przez adrian17 Ekspert (344,860 p.)

jakim cudem długość podana w nawiasach jest liczona tylko dla ostatniego członu po pauzie, skoro całe wyrażenie jest w nawiasie

Um... ale u Ciebie to {2,4} odnosi się do . - czyli dowolnego znaku.

Spójrz na graficzną reprezentację regexa tutaj: https://regexper.com/#%5E%28%5B0-9A-Za-z%5D%2B-%5B0-9A-Za-z%5D%2B-%5B0-9A-Za-z%5D%2B%29.%7B2%2C4%7D%24

komentarz 6 lutego 2020 przez kubekszklany Gaduła (3,190 p.)
Dobra, to jak mam sprawdzić długość całego wyrażenie podanego w nawiasach: () ? Inaczej mówiąc całej grupy?
komentarz 6 lutego 2020 przez adrian17 Ekspert (344,860 p.)
Ale w jakim sensie "sprawdzić długość"?
komentarz 6 lutego 2020 przez kubekszklany Gaduła (3,190 p.)
No po prostu sprawdzić długość. Jak napiszę ^[\w]{5,10}$ to pasuje mi każdy wyraz który ma długość od 5 do 10. A ja chciałbym sprawdzić długość dla swojego wyrażenia w nawiasie.
komentarz 6 lutego 2020 przez Tomek Sochacki Ekspert (227,510 p.)
no to po co dajesz tą kropkę przez {2,4} ?
komentarz 6 lutego 2020 przez adrian17 Ekspert (344,860 p.)
To tak nie działa. W nawiasach masz "dowolnie długi ciąg liter i cyfr, myślnik, dowolnie długi ciąg liter i cyfr, myślnik, dowolnie długi ciąg liter i cyfr". Nie możesz teraz po fakcie powiedzieć że ta "dowolnie długa" długość jednak jest od 5 do 10.

Proponuję zrobić na to osobny pattern (lub w ogóle nie sprawdzać samej długości całego stringa regexem).
komentarz 6 lutego 2020 przez adrian17 Ekspert (344,860 p.)

no to po co dajesz tą kropkę przez {2,4} ?

(cośtam){2, 4} powiedziałoby że "wzorzec w tych nawiasach może się pojawić od 2 do 4 razy pod rząd" - ale nic o długości samego stringa.

komentarz 6 lutego 2020 przez Tomek Sochacki Ekspert (227,510 p.)
najlepiej po prostu napisz sobie do tego testy jednostkowe i pokaż nam asercje true i false to pomożemy doszlifować regexp. Tego typu rzeczy naprawdę najlepiej zaczynać od testów.
komentarz 6 lutego 2020 przez kubekszklany Gaduła (3,190 p.)
Kropkę dałem bo bez niej to nic mi nie chciało spasować.

Czyli innymi słowy nie da się tak jak chciałem w 1 regex'ie?
komentarz 6 lutego 2020 przez adrian17 Ekspert (344,860 p.)
AFAIK w jednym regexie bym tego nie robił.

Podobne pytania

0 głosów
1 odpowiedź 201 wizyt
0 głosów
2 odpowiedzi 267 wizyt
pytanie zadane 10 czerwca 2023 w JavaScript przez andrzej.polak Nowicjusz (220 p.)
0 głosów
1 odpowiedź 340 wizyt
pytanie zadane 9 stycznia 2022 w Matematyka, fizyka, logika przez dark41 Użytkownik (760 p.)

92,583 zapytań

141,434 odpowiedzi

319,669 komentarzy

61,966 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!

...