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

Wyrażenie regex

Aruba Cloud - Virtual Private Server VPS
+1 głos
213 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 (155,140 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 (155,140 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ź 550 wizyt
pytanie zadane 31 października 2016 w Systemy operacyjne, programy przez Patryk Bieganski Nowicjusz (180 p.)
0 głosów
2 odpowiedzi 461 wizyt
0 głosów
2 odpowiedzi 287 wizyt
pytanie zadane 7 stycznia 2021 w Inne języki przez Gucci Gaduła (4,580 p.)

93,329 zapytań

142,323 odpowiedzi

322,400 komentarzy

62,662 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

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!

...