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

Wyrażenie regex

Object Storage Arubacloud
+1 głos
128 wizyt
pytanie zadane 6 listopada 2020 w Systemy operacyjne, programy przez MrJ_ Nowicjusz (200 p.)
Witam. Mam za zadanie napisać regex, który pokaże nazwy opcjonalnie zaczynające się na #, a do tego mające 6 znaków w postaci duże litery/cyfry lub małe litery/cyfry. Ewentualny # nie należy do tych 6 znaków. W momencie gdy występuje # to całe wyrażenie ma wtedy 7 znaków. Nie mogę znaleźć rozwiązania na wyświetlanie się tych 6 znaków w danym formacie. Wydaje mi się, że musi to być coś z operatorem |, ale ([A-Z0-9]\{6}|[a-z0-9]\{6}) nie jest prawidłowe. Ktoś mógłby mi wytłumaczyć jak to zapisać? Przeszukałem kilka stron, ale nie mogłem znaleźć odpowiedzi na pytanie. Rozwiązaniem nie pogardzę, ale też chciałbym zrozumieć jak to zapisać by wykorzystywać to w przyszłości.

 

"^[#]?([A-Z0-9]\{6}|[a-z0-9]\{6})$"
komentarz 6 listopada 2020 przez draghan VIP (106,230 p.)
A w jakimś konkretnym języku ten pattern masz zapisać? Składnia różni się między językami, może dlatego "sprawdzarka" interpretuje inaczej to co próbujesz zapisać.
komentarz 6 listopada 2020 przez draghan VIP (106,230 p.)
I co to za sprawdzarka? To coś w stylu SPOJa? Czy sprawdzasz sobie gdzieś na własną rękę w sieci, np. na regex101.com?
komentarz 6 listopada 2020 przez MrJ_ Nowicjusz (200 p.)
Co do języka to nie wiem, naprawdę jestem kompletnie zielony, bo nic nam nigdy o języku nie wspominali. Robimy to na konsoli linuxowej. Sprawdzarka jest strony mojej uczelni chyba. https://regexr.com/ - na tej o natomiast sprawdziłem i wyrażenie, które jest prawidłowe nie jest prawidłowe tam, więc chyba daje sobie spokój.
komentarz 6 listopada 2020 przez draghan VIP (106,230 p.)
Nie poddawaj się jeszcze. Twój pattern wygląda na oko w porządku (prawie). Tak jak tangarr pisał niżej, pozbycie się backslashy powinno pomóc. Backslash zazwyczaj oznacza wyescape'owanie specjalnych znaków żeby silnik regexa mógł dopasować dosłownie dany znak. Jak robisz '\{' to zazwyczaj każesz dopasować znak '{' zamiast otworzyć klamerkę do kwantyfikatora {}.

Widzę dwie wskazówki które mogą nie pasować na sprawdzarce uczelni. Takie trochę zgadywanie, ale co poradzić? :)

1. Na pierwszy strzał spróbowałbym się pozbyć znaków początku i końca dopasowania '^' i '$'. Nie widzę w podanej przez Ciebie treści, że dane nazwy będą jedynymi ciągami znaków w linii.

2. Być może powinieneś rozważyć użycie grupy nieprzechwytującej (?:) zamiast zwyczajnej, w której zamykasz alternatywę?

1 odpowiedź

+1 głos
odpowiedź 6 listopada 2020 przez tangarr Mędrzec (154,780 p.)

Wydaje mi się, że wystarczy pozbyć się backslashy.

^[#]?([A-Z0-9]{6}|[a-z0-9]{6})$

 

komentarz 6 listopada 2020 przez MrJ_ Nowicjusz (200 p.)
Niestety nie. Być może to jest wina kompilatora, bo robię to na sprawdzarce i tam różne błędy już widziałem. Np. kropkę można zapisać chyba jako \., a tam to nie wchodziło i trzeba było napisać [.]. Masakra, od kilku dni kminie i nie wiem czy nie umiem tego zapisać czy to wina sprawdzarki...
komentarz 6 listopada 2020 przez tangarr Mędrzec (154,780 p.)

Możesz uściślić rodzaj wyrażenia regularnego?

Na stronie https://regex101.com/r/Y0h11x/2 to wyrażenie działa. Co prawda są do niego dodane opcje/parametry.

/^[#]?([A-Z0-9]{6}|[a-z0-9]{6})$/gm

Upewnij się, że nie przekazujesz do wyrażenia dodatkowych białych znaków (spacje, tabulatury, znaki nowej linii)

Podobne pytania

0 głosów
1 odpowiedź 389 wizyt
pytanie zadane 31 października 2016 w Systemy operacyjne, programy przez Patryk Bieganski Nowicjusz (180 p.)
0 głosów
2 odpowiedzi 235 wizyt
0 głosów
2 odpowiedzi 240 wizyt
pytanie zadane 7 stycznia 2021 w Inne języki przez Gucci Gaduła (4,580 p.)

92,524 zapytań

141,357 odpowiedzi

319,384 komentarzy

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

...