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

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

Rejestracja: 10 lat temu

Ostatnio: 7 godzin 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

tsz
2020-07-10 19:00
tsz

Rejestracja: 1 miesiąc temu

Ostatnio: 11 godzin temu

1

Nie, dokumentacja to nie. Ta na MDN jest wystarczająco dobra.

Nieczytelność przy długich wyrażeniach. Dlatego regexy stosuję tylko jak są proste, a jak trzeba coś bardziej złożonego napisać to wrzucam w projekt verbal expressions i da się żyć.

Pozostało 580 znaków

2020-07-10 19:23

Rejestracja: 2 lata temu

Ostatnio: 13 godzin temu

Lokalizacja: Kraków

6

Oprócz tego co wymieniłeś

  • niespójności między implementacjami regexpów w różnych językach, narzędziach itd. Nawet znalazłem jakiś artykulik o tym :D
  • brzydka, nieprzyjemna składnia - wyrażenia na 40+ znaków nie byłyby problemem, gdyby nie były jakimś paskudnym plątańcem kilku rodzajów nawiasów, ukośników i innych znaków specjalnych ściśniętych do kupy tak, że oczy bolą od samego patrzenia...

Ogólnie to regexów w kodzie prawie nie używam, chyba że do jakiegoś prostego input validation typu nie wiem, "czy PESEL wygląda jak PESEL". Poza kodem używam czasem przy przeszukiwaniu kodu / logów / rzeczy w tym stylu. Czasem nawet zmiany w kodzie robię regexpami, jeśli coś byłoby zbyt upierdliwe by robić na piechotę, a IDE akurat czegoś nie ogarnie.


Nie znam się, ale się wypowiem

Pozostało 580 znaków

2020-07-10 19:24
Moderator

Rejestracja: 12 lat temu

Ostatnio: 1 godzina temu

1

W tym przypadku wkurza mnie:

  • bezsensowne {1} w wielu miejscach
  • jeśli dobrze widzę, to to też mutuje wejściowy string
  • zamiast "orowania" iluś wyrażeń zamieniłbym je na osobne, które łatwiej byłoby czytać

W ogólnym przypadku:

  • jak wyrażenie rośnie to bardzo szybko może stać się nieczytelne
  • im dłuższe zapytanie tym większa szansa, na to, że będzie nieoptymalne (jeśli używany silnik używa NFA i powrotów, przy DFA nie ma takich problemów)
  • najczęściej używane PCRE nie jest opisem języków regularnych (bo backreferencje)

Pozostało 580 znaków

2020-07-10 19:33

Rejestracja: 6 lat temu

Ostatnio: 2 godziny temu

13

W wyrażeniach regularnych wkurza mnie wszystko i wolę ich nie stosować.

Masz problem? Chcesz go rozwiązać za pomocą wyrażeń regularnych? No to masz już dwa problemy.

Pozostało 580 znaków

2020-07-10 19:55

Rejestracja: 2 lata temu

Ostatnio: 4 minuty temu

3

Walidacja [A-Za-z] a input przychodzi w Unicode :P Tak poza tym to unicode powinien zostać zdelegalizowany.
Widziałem kiedyś nawet przykład XSS oparty na tym, że różne parsery różnie traktują znaki podobne do innych liter typ z,ż,ź

edytowany 1x, ostatnio: chalwa, 2020-07-10 19:56

Pozostało 580 znaków

var
2020-07-10 20:27
var

Rejestracja: 2 lata temu

Ostatnio: 21 minut temu

Lokalizacja: Wrocław

9

Najbardziej wkurza mnie to, że jeśli muszę już z nich skorzystać to dzieje się to na tyle rzadko że zawsze zdążę zapomnieć wszystko czego się nauczyłem i muszę uczyć się od nowa.

Pozostało 580 znaków

2020-07-10 20:28

Rejestracja: 2 lata temu

Ostatnio: 4 godziny temu

2

Brak jakiegoś sensownego, off-linowego edytora do tego ustrojstwa.
Takiego z możliwością dostosowania kolorowania składni i stosowania wieloliniowego zapisu, który ostatecznie zostanie sparsowany do jednego stringa.
Czyli takiego SASS dla wyrażeń regularnych.

No chyba, że coś takiego istnieje, a ja nic nie wiem.


edytowany 2x, ostatnio: Freja Draco, 2020-07-11 14:19
Grok z Logstasha ;) - hauleth 2020-07-10 22:05

Pozostało 580 znaków

2020-07-11 03:25

Rejestracja: 5 lat temu

Ostatnio: 9 godzin temu

Lokalizacja: Chorzów

1

Kiedyś musiałem się z tym zmierzyć nieco poważniej i zniechęciła mnie składnia niczym w języku BrainFuck ( https://pl.wikipedia.org/wiki/Brainfuck ).
Nie mówię, że dziś nie korzystam ... ale staram się unikać. Analizowanie nieco większych wyrażeń po kilku latach od napisania bywa bardzo bolesne.
Myślę, że na złość programistom wymyślił to sam diabeł po tym jak wkur.... się na C++.


Projektowanie i programowanie. Hobbystycznie elektronika i audio oszołom.
edytowany 1x, ostatnio: katakrowa, 2020-07-11 03:25

Pozostało 580 znaków

2020-07-11 06:07

Rejestracja: 5 lat temu

Ostatnio: 8 godzin temu

3
  1. Składnia. Kiedyś ogarniałem jakieś podstawy tego jak regex działa, dziś już nie pamiętam nic. Łatwiej byłoby mi tego używać gdyby to było jakoś sensownie zaimplementowane w język zamiast kilku krzaków z nawiasami. Mniejsza szansa na pomyłkę, łatwiej to czytać (i robić CR) osobie która nie musiała tego ustrojstwa nigdy dotykać.
  2. Metoda copy-paste'a nie zadziała, bo i tak każdy język implementuje to po swojemu, więc ciężko nawet stawiać pierwsze kroki na przykładach z neta.

Pozostało 580 znaków

2020-07-11 08:29

Rejestracja: 10 lat temu

Ostatnio: 6 godzin temu

Lokalizacja: Pabianice

1

Raz musiałem powyciągać coś z faktur w pdfach i szlag mnie trafiał jak to jest skonstruowane. Jeden monitor to był jakiś edytor online, drugi kod a trzeci wynik ;-) rzadko kiedy udało mi się to dobrze napisać bo wychodziły jakieś nie ścisłości.

Pozostało 580 znaków

Odpowiedz

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