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

C# Wyrażenia Regularne - Bug?

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
0 głosów
313 wizyt
pytanie zadane 6 lutego 2020 w C# przez kubekszklany Gaduła (3,250 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 Mentor (350,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,250 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 Mentor (350,860 p.)
Ale w jakim sensie "sprawdzić długość"?
komentarz 6 lutego 2020 przez kubekszklany Gaduła (3,250 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,490 p.)
no to po co dajesz tą kropkę przez {2,4} ?
komentarz 6 lutego 2020 przez adrian17 Mentor (350,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 Mentor (350,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,490 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,250 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 Mentor (350,860 p.)
AFAIK w jednym regexie bym tego nie robił.

Podobne pytania

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

93,174 zapytań

142,185 odpowiedzi

321,970 komentarzy

62,503 pasjonatów

Advent of Code 2024

Top 15 użytkowników

  1. 1157p. - dia-Chann
  2. 1139p. - Łukasz Piwowar
  3. 1131p. - CC PL
  4. 1126p. - Łukasz Eckert
  5. 1118p. - Tomasz Bielak
  6. 1104p. - Michal Drewniak
  7. 1083p. - Marcin Putra
  8. 1078p. - rucin93
  9. 1071p. - rafalszastok
  10. 1054p. - Adrian Wieprzkowicz
  11. 1047p. - Piotr Aleksandrowicz
  12. 1037p. - Michał Telesz
  13. 1023p. - Mariusz Fornal
  14. 1017p. - Mikbac
  15. 1005p. - ssynowiec
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!

...