Zgadza się nie masz wiedzy to nie przeskoczysz. Ja to sporo sam pisałem i w IT Academy szkolenia kończyłem także radzę sobie. Dobrych pracowników w IT to ze świecą trzeba szukać. A doświadczenia jak się nie ma to daleko się nie zajdzie…
RegEx to podstawa pracy na plikach, gdy trzeba zamienić pierdółkę w tysiącu plików. Nie zawsze wszystko jest zapisywane w jsonie albo xmlu, a poza tym regex jest szybszy, zwykle to linijka kodu, a nie kilkanaście w przypadku odczytywania drzewa xml/json.
Popieram, mi się ostatnio regex przydał, kiedy musiałem odczytać datę i czas utworzenia pliku zapisaną wewnątrz pliku HTML.
Jak by ktoś się zastanawiał jak wygląda przykład wzorca na sprawdzenie email'a, którego używa Google lub MS:
'[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?'
Nie wprowadzaj ludzi w błąd! Nie jest prawdą, że MS jak i Google używają jakichkolwiek wyrażeń regularnych do sprawdzania poprawności adresu email. Dodatkowo to wyrażenie co podałeś jest kompletnie błędne. Nie spełnia nawet podstawowych założeń rfc 822 jak i 5322.
Powiem więcej, do sprawdzenia poprawności adresu email w ogóle nie używa się regexp'a a 99,99% przykładów z sieci jest źle napisanych i po prostu nie działa jak powinno.
A na przyszłość - Jeśli chcesz rozwiązać problem za pomocą wyrażenia regularnego, to masz dwa problemy
Programuję w C# i z tego co wiem na co dzień używam atrybutów w jakiejś formie, nie wierzysz w używanie Regex'ów np. przez MS? Proszę bardzo, kod źródłowy .NET Framework:
https://github.com/Microsoft/referencesour...essAttribute.cs
Dalej idąc tym tokiem rozumowania, bazuję na wiedzy Sasha Goldshtein, który zajmuje się wydajnością aplikacji m.in w .NET i optymalizacją na poziomie assemblera i jak poleca jakiś wzorzec, ponieważ zna się na tym lepiej niż ja, to wole go posłuchać.
Na przyszłość, zanim zaczniesz kogoś obwiniać o niewiedzę to przeczytaj wypowiedź jako całość bez wybiórczego cytowania, ponieważ nie pasuje Ci to do Twojego kontekstu.
A propos, faktycznie swoją wypowiedzą powtórzyłeś prawie od deski do deski moją wypowiedź dlaczego nie warto używać regex'ów, m.in przez takie sytuacje
RegEx to podstawa pracy na plikach, gdy trzeba zamienić pierdółkę w tysiącu plików. Nie zawsze wszystko jest zapisywane w jsonie albo xmlu, a poza tym regex jest szybszy, zwykle to linijka kodu, a nie kilkanaście w przypadku odczytywania drzewa xml/json.
Jak by ktoś się zastanawiał jak wygląda przykład wzorca na sprawdzenie email'a, którego używa Google lub MS:
'[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?'
Nie wprowadzaj ludzi w błąd! Nie jest prawdą, że MS jak i Google używają jakichkolwiek wyrażeń regularnych do sprawdzania poprawności adresu email. Dodatkowo to wyrażenie co podałeś jest kompletnie błędne. Nie spełnia nawet podstawowych założeń rfc 822 jak i 5322.
Powiem więcej, do sprawdzenia poprawności adresu email w ogóle nie używa się regexp'a a 99,99% przykładów z sieci jest źle napisanych i po prostu nie działa jak powinno.
A na przyszłość - Jeśli chcesz rozwiązać problem za pomocą wyrażenia regularnego, to masz dwa problemy
regexy warto znać, sam ich używam, ale jestem ich wrogiem. Kod zawierający zbyt dużo wyrażeń jest zwyczajnie nieczytelny I kosztowny w utrzymaniu. Jednorazowe akcje, jak najbardziej, ale w dużym projekcie już niekoniecznie.
Wyrażenia regularne są fajne, pozwalają oszczędzić czas. Fajnie jest w przypadku 'znajdź i zamień' w plikach tekstowych, kiedy możesz odwoływać się do fragmentów znalezionych wyrażeniem za pomocą \1, \2 itd. Geany jest moim odpowiednikiem notatnika dzięki tej opcji.
Mi ostatnio przyszło inserty na merge przerabiać w skrypcie uzupełniającym dane słownikowe - do \7 doszedłem
Ile PCLab ma z tego g*wienka ? Aż tyle, że tak często to wrzuca i w ogóle się opłaca, ludzie się nabierają ? Widać takich co chodzą na pokazy garnków nie brak...ale z drugiej strony skoro trafia to tutaj, a np. gracze kupują gry przed premierą, recenzjami...jakby miało ich zabraknąć ? Przecież lootboxy z niczego się nie wzięły, widocznie i takie rzeczy są opłacalne dla największych portali...
Co za bzdury... oczywiście wyrażenia regularne mogą być przydatne w wielu sytuacjach, ale nie opowiadajmy bzdur, że są obecne we wszystkich programach... W wielu z nich są kompletnie nieprzydatne i można być bardzo dobrym programistą bez posiadania o nich większej wiedzy. W ostatnich latach środowisko programistów strasznie się stacza. Moim zdaniem trend ten drastycznie zwiększył się wraz z ze zwiększonym zapotrzebowaniem na 'programistów' z uwagi na potrzeby rynku aplikacji mobilnych i wysyp masy framework'ów, w których nawet małpa byłaby w stanie coś skleić... nie ważne, że tak jak większość aplikacji mobilnych dany produkt działa wolno, zjada mase zasobów lub nie działa w ogóle... ważne, ze po prostu jest... Swoją ciegiełkę do takiego stanu rzeczy dokładają też autorzy beznadziejnych artykułów, które przedstawiają jakieś durne 'best practice', które bardzo często się nie sprawdzają jak zreszto wszystko co niby jest 'best' lub przechwalają jakieś rozwiązania (tak jak robi to ten artykuł). Później taki początkujący programista czyta takie głupoty i daną rzecz zaczyna wbijać na każdym kroku, gdyż przecież miało to być takie super rozwiązanie... Programista musi być samodzielny i samemu być w stanie wybrać to co jest 'best' dla jego oprogramowania, aby działało szybko i stabilnie, a kod był czytelny, gdyż jako twórca zna swój produkt najlepiej.
'Niektórzy ludzie, gdy napotykają na problem, myślą sobie: »Wiem! Użyję wyrażeń regularnych«. I teraz mają dwa problemy'
Zgadzam się w pełni. Jednak czasem warto rozwiązać 2 prostsze problemy niż jeden większy.
Wyrażenia regularne są fajne, pozwalają oszczędzić czas. Fajnie jest w przypadku 'znajdź i zamień' w plikach tekstowych, kiedy możesz odwoływać się do fragmentów znalezionych wyrażeniem za pomocą \1, \2 itd. Geany jest moim odpowiednikiem notatnika dzięki tej opcji. Nie wszyscy jednak ufają na tyle wyrażeniom (sobie?) by ich używać. Wyrażenia regularne generują problemy, są osoby, które sobie z nimi łatwo radzą, ale są takie, które polegną.
Dużo zapłacili to nie ma napisu 'reklama'. PC LOL $
Popieram, mi się ostatnio regex przydał, kiedy musiałem odczytać datę i czas utworzenia pliku zapisaną wewnątrz pliku HTML.
#include <dateutils.hpp>
#include <boost/regex.hpp>
bool __fastcall GetDateFromIndexHtm(UnicodeString strIndexFile, TDateTime &dtDate)
{
TStringList *pstrlistFile = new TStringList;
pstrlistFile->LoadFromFile(strIndexFile);
std::wstring wstrText = pstrlistFile->GetText();
delete pstrlistFile;
const boost::wregex regexDT(L"(\\d{4})-(\\d{2})-(\\d{2}) (\\d{2}):(\\d{2})");
boost::wsmatch wstrMatch;
bool bFound = boost::regex_search(wstrText, wstrMatch, regexDT);
if(bFound) {
std::wstring wstrDate = std::wstring(wstrMatch[0].first,wstrMatch[0].second);
UnicodeString strDate(wstrDate.c_str());
int nPos = strDate.Pos(L" ");
if(nPos > 0) {
strDate[nPos] = L'T';
dtDate = ISO8601ToDate(strDate);
return true;
}
}
return false;
}
Jak by ktoś się zastanawiał jak wygląda przykład wzorca na sprawdzenie email'a, którego używa Google lub MS:
'[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?'
Nie wprowadzaj ludzi w błąd! Nie jest prawdą, że MS jak i Google używają jakichkolwiek wyrażeń regularnych do sprawdzania poprawności adresu email. Dodatkowo to wyrażenie co podałeś jest kompletnie błędne. Nie spełnia nawet podstawowych założeń rfc 822 jak i 5322.
Powiem więcej, do sprawdzenia poprawności adresu email w ogóle nie używa się regexp'a a 99,99% przykładów z sieci jest źle napisanych i po prostu nie działa jak powinno.
A na przyszłość - Jeśli chcesz rozwiązać problem za pomocą wyrażenia regularnego, to masz dwa problemy
Programuję w C# i z tego co wiem na co dzień używam atrybutów w jakiejś formie, nie wierzysz w używanie Regex'ów np. przez MS? Proszę bardzo, kod źródłowy .NET Framework:
https://github.com/Microsoft/referencesour...essAttribute.cs
Dalej idąc tym tokiem rozumowania, bazuję na wiedzy Sasha Goldshtein, który zajmuje się wydajnością aplikacji m.in w .NET i optymalizacją na poziomie assemblera i jak poleca jakiś wzorzec, ponieważ zna się na tym lepiej niż ja, to wole go posłuchać.
Na przyszłość, zanim zaczniesz kogoś obwiniać o niewiedzę to przeczytaj wypowiedź jako całość bez wybiórczego cytowania, ponieważ nie pasuje Ci to do Twojego kontekstu.
A propos, faktycznie swoją wypowiedzą powtórzyłeś prawie od deski do deski moją wypowiedź dlaczego nie warto używać regex'ów, m.in przez takie sytuacje
po co te kropki
mnie zawsze meczyl dr bo napisalem program maly ale z wieloma zakazanymi sztuczkami. dzialal ale po kompilacji juz nikt nie wiedzial ocoho
Jak by ktoś się zastanawiał jak wygląda przykład wzorca na sprawdzenie email'a, którego używa Google lub MS:
'[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?'
Nie wprowadzaj ludzi w błąd! Nie jest prawdą, że MS jak i Google używają jakichkolwiek wyrażeń regularnych do sprawdzania poprawności adresu email. Dodatkowo to wyrażenie co podałeś jest kompletnie błędne. Nie spełnia nawet podstawowych założeń rfc 822 jak i 5322.
Powiem więcej, do sprawdzenia poprawności adresu email w ogóle nie używa się regexp'a a 99,99% przykładów z sieci jest źle napisanych i po prostu nie działa jak powinno.
A na przyszłość - Jeśli chcesz rozwiązać problem za pomocą wyrażenia regularnego, to masz dwa problemy
Mi było dane przekonać się, że limitem w Geany jest \9
Wyrażenia regularne są fajne, pozwalają oszczędzić czas. Fajnie jest w przypadku 'znajdź i zamień' w plikach tekstowych, kiedy możesz odwoływać się do fragmentów znalezionych wyrażeniem za pomocą \1, \2 itd. Geany jest moim odpowiednikiem notatnika dzięki tej opcji.
Mi ostatnio przyszło inserty na merge przerabiać w skrypcie uzupełniającym dane słownikowe - do \7 doszedłem
A co Lab może, Niemiec każe Polak robi.
Zgadzam się w pełni. Jednak czasem warto rozwiązać 2 prostsze problemy niż jeden większy.
Wyrażenia regularne są fajne, pozwalają oszczędzić czas. Fajnie jest w przypadku 'znajdź i zamień' w plikach tekstowych, kiedy możesz odwoływać się do fragmentów znalezionych wyrażeniem za pomocą \1, \2 itd. Geany jest moim odpowiednikiem notatnika dzięki tej opcji. Nie wszyscy jednak ufają na tyle wyrażeniom (sobie?) by ich używać. Wyrażenia regularne generują problemy, są osoby, które sobie z nimi łatwo radzą, ale są takie, które polegną.