Co was najbardziej wkurza z pracą z wyrażeniami regularnymi?

Odpowiedz Nowy wątek
2020-07-10 18:48

Rejestracja: 10 lat temu

Ostatnio: 1 minuta temu

1
  • Wyrażenia na 40 znaków w kodzie? if($postcode =~ s/^([a-zA-Z]{1,2}\d{1}(|[a-zA-Z0-9]{1}))(|\s+)\d{1}\w{2}$/$1/)
  • Brak sensownego API/doc'ów do funkcji
  • Konieczność sprawdzania flag/elementów regexpów w necie?
  • Błędy (backtracking, jit, utf8, recursive patterns)
  • Więcej..?

Piszcie, co was wkurza, czemu z nich nie korzystacie?

(Pytanie oczywiście na potrzeby libki t-regx).


IntelliJ ma coś takiego jak "language injection" i podświetla/podpowiada składnie dla regexu nawet jak regex jest w "". W regexie który podajesz ktoś pisze (|x) zamiast x? Mnie to wkur** :D - 0xmarcin 2020-07-12 07:39

Pozostało 580 znaków

2020-07-11 10:35

Rejestracja: 5 lat temu

Ostatnio: 3 godziny temu

2

Najbardziej wkurzaja mnie wyrazenia regularne

Pozostało 580 znaków

2020-07-11 13:44

Rejestracja: 12 lat temu

Ostatnio: 5 godzin temu

3

Jeśli rozwiązujesz jakiś problem za pomocą wyrażeń regularnych, to masz dwa problemy :)


IT mikromenadżer

Pozostało 580 znaków

2020-07-11 14:07

Rejestracja: 2 lata temu

Ostatnio: 1 godzina temu

1

I jeszcze wkurza mnie, że wewnątrz przedziałów znaki specjalne tracą swoje znaczenie, więc do tej pory nie wiem, jak zrobić (prawidłowo) coś takiego:

[ ("„^]
z
[ .,)"”$]

Dla czytelności rozbite na 3 wiersze, a miałoby wyłapać każdą pojedynczą literkę "z" otoczoną odstępami, interpunkcją albo znajdującą się (i tu jest problem) na samym początku albo końcu ciągu.


Możesz zawsze ([..]|^)z([...]|$) i zadziała :D - 0xmarcin 2020-07-12 07:43
@0xmarcin: No już coś podobnego wymyśliłam, ale dzięki za zaangażowanie :) - Freja Draco 2020-07-12 13:56

Pozostało 580 znaków

2020-07-11 14:12

Rejestracja: 4 lata temu

Ostatnio: 1 godzina temu

2

Samo korzystanie z regularnych ekspresji ( ;) ) to już rak sam w sobie, szczególnie że zazwyczaj jest używany tam, gdzie proste operacje na stringach dają radę ( EndsWith, StartsWith, Contains ), a tam gdzie faktycznie się przydaje, to szybko powstaję coś, co wygląda paskudnie.

Dziwie się, że nie ma jakiegoś Regexa funkcyjnego, że się składa funkcję zamiast tego dziwnego syntaxu

edytowany 2x, ostatnio: WeiXiao, 2020-07-11 14:12
WOW! Reglarne ekspresje ... Doskonale oddaje klimat :-) - katakrowa 2020-07-11 16:08

Pozostało 580 znaków

2020-07-11 14:23

Rejestracja: 1 rok temu

Ostatnio: 3 godziny temu

2

Najbardziej wkurzają mnie użytkownicy. Wielu z nich uważa się za wielkich programistów a płaczą przy pierwszym lepszym wyrażeniu regularnym. Ledwo zobaczą \d+ i biegną do mnie po pomoc.
title
A tak na poważnie: implementacja w różnych językach - w Javie nie ma literału wyrażeń regularnych i trzeba wpisywać je do Stringa. Potem wychodzą takie potworki jak \\d+\\s\\\\[\\\\]. W Perlu taka zabawa jest prosta

print "dupa\n" if /^\w+$/i;

A z drugiej strony to wina implementacji a nie wyrażeń.


Nie sztuka uciec gdy w dupie sztuciec

Pozostało 580 znaków

2020-07-11 14:29

Rejestracja: 2 lata temu

Ostatnio: 1 godzina temu

1
Freja Draco napisał(a):

I jeszcze wkurza mnie, że wewnątrz przedziałów znaki specjalne tracą swoje znaczenie, więc do tej pory nie wiem, jak zrobić > wyłapać każdą pojedynczą literkę "z" otoczoną odstępami, interpunkcją albo znajdującą się (i tu jest problem) na samym początku albo końcu ciągu.

No i przez was wymyśliłam :p

(^|[\s\(\"„«»])(z)([\s\)\"”«»,.?!:;]|$)
(^|[\s\(\"„«»])
(z)
([\s\)\"”«»,.?!:;]|$)

W zależności od silnika \bz\b lub \<z\> powinno zadziałać. - hauleth 2020-07-11 21:36

Pozostało 580 znaków

2020-07-11 16:09

Rejestracja: 5 lat temu

Ostatnio: 3 dni temu

Lokalizacja: Chorzów

1
Freja Draco napisał(a):
Freja Draco napisał(a):

I jeszcze wkurza mnie, że wewnątrz przedziałów znaki specjalne tracą swoje znaczenie, więc do tej pory nie wiem, jak zrobić > wyłapać każdą pojedynczą literkę "z" otoczoną odstępami, interpunkcją albo znajdującą się (i tu jest problem) na samym początku albo końcu ciągu.

No i przez was wymyśliłam :p

(^|[\s\(\"„«»])(z)([\s\)\"”«»,.?!:;]|$)
(^|[\s\(\"„«»])
(z)
([\s\)\"”«»,.?!:;]|$)

BrainFuck i tyle! Zapytam Cię za kilka miesięcy o to co to wyrażenie robi :-)


Projektowanie i programowanie. Hobbystycznie elektronika i audio oszołom.

Pozostało 580 znaków

2020-07-11 20:33

Rejestracja: 3 lata temu

Ostatnio: 3 minuty temu

2

Mnie najbardziej wkurza, że nie mogę tego na stałe zapamiętać. Dla mnie po prostu to nie jest intuicyjne. Szczególnie jak trzeba coś zrobić w innym języku niż polski/angielski.
No i jak wiele osób tutaj nigdy po 3 miesiącach lub może szybciej nie pamiętam co jakieś bardziej skomplikowane wyrażenie robiło.

Pozostało 580 znaków

2020-07-11 21:08

Rejestracja: 16 lat temu

Ostatnio: 1 godzina temu

1

Większość tego co już wspomniano, oraz to że nie mogę spamiętać które znaki są łykane dosłownie a które są jakimś elementem składni i trzeba je escape'ować.
Zwłaszcza też że to zależy od implementacji.

Oraz poważne ograniczenia składni która jest nastawiona na pozytywne dopasowywanie, a ssie w przypadku potrzeby dopasowania negatywnego (znajdź teksty które NIE pasują do wzorca).

W kodzie staram się nigdy nie stosować. Może się zdarzyło raz czy dwa…
Regexpów używam głównie do bardziej złożonych operacji zamiany tekstu w edytorze.

edytowany 1x, ostatnio: Azarien, 2020-07-11 21:12

Pozostało 580 znaków

2020-07-12 02:07
Moderator

Rejestracja: 12 lat temu

Ostatnio: 37 minut temu

Lokalizacja: Wrocław

5

W mojej pierwszej pracy był taki jeden Piotrek, który pisał magisterkę z wyrażeń regularnych, i on faktycznie je w pełni umiał, potrafił parsować w locie i napisać dowolne z głowy. I w tej pracy, każdy kto chciał napisać wyrażenie regularne po prostu szedł do Piotrka i mówił, co potrzeba.

Tak więc obecnie najbardziej w wyrażeniach regularnych wkurza mnie to, że takiego Piotrka nie ma w każdej pracy. :D


"HUMAN BEINGS MAKE LIFE SO INTERESTING. DO YOU KNOW, THAT IN A UNIVERSE SO FULL OF WONDERS, THEY HAVE MANAGED TO INVENT BOREDOM."
Trzeba mu zasugerować, żeby odpalił Piotrek As A Service (tylko skrót PaaS już zajęty…) i będzie milionerem. - Afish 2020-07-12 04:14
W tamtych czasach wszystko było on-premise, więc Piotrek też musiał taki być. - somekind 2020-07-12 15:22

Pozostało 580 znaków

Odpowiedz

1 użytkowników online, w tym zalogowanych: 0, gości: 0, botów: 1

Robot: Yandex