[48] (C#) Regular expressions
ฝัง
- เผยแพร่เมื่อ 18 ก.ย. 2024
- Wyrażenia regularne. Brzmi mądrze, co? Chciałbyś się ich nauczyć? No to koniecznie obejrzyj ten odcinek!
W odcinku tym nauczysz się języka wyrażeń regularnych, zobaczysz jak definiować podstawowe wyrażenia oraz poznasz użycie klasy Regex w C#.
Dziękuję za przystępne wytłumaczenie podstaw wyrażeń regularnych.
w 14:56 chyba powinno być "(www\.)?", a tak poza tym to świetny materiał :)
Ziomeczku świetny materiał!
Dzięki :)
Masz dar tlumaczenia. Zaloz kanal anglojezyczny a bedziesz mial tysiace wyswietlen.
Wystarczającą przyjemność daje mi ten kanał :)
13:46
Ale po co tam ten daszek z przodu skoro i tak może tam być dowolna ilość dowolnych znaków?
"Daszek" z przodu faktycznie nie jest wymagany, bo kwantyfikator "^" i tak jest zachłanny i dopasuje maksymalną możliwą liczbę znaków. Dodanie "daszka" może optymalizować wyszukiwanie, bo dopasowany podciąg może zaczynać się tylko w jednym miejscu. Dość mocno ogranicza nam to zbiór rozwiązań.
Dodanie "daszka" z przodu jest też informacją dla nas. Dzięki niemu dużo lepiej widzimy, że potencjalne rozwiązanie na pewno będzie rozpoczynało się na początku ciągu.
Co ciekawe, do sprawdzenia w ogóle moglibyśmy użyć tylko "\.txt$", jednak żeby dopasować takie nazwy już to nie wystarczy.
Muzyczka z początku przypomina mi pewien utwór autechre
Niestety nie znam :(
Ja użyłem kilku początkowych sekund utworu dostępnego w bibliotece TH-cam na otwartej licencji :)
15:20 powinno być (www\.)? zamiast (www.)?
jak zanegować ? czyli jak zaznaczyć wszystko oprócz wyrażenia regularnego ?
No i to jest już dłuższy temat. Najpierw zdefiniujmy negowanie wyrażenia regularnego.
No bo co tam naprawdę znaczy, że chcemy zanegować wyrażenie "a{3}"? Chcemy mieć litery "a", ale nie dokładnie 3? A może chcemy mieć dokładnie 3 znaki, ale nie "a"? A może chcemy wszystkie słowa, które nie zawierają ciągu "aaa"? Nie istnieje bezpośrednia definicja. Dlatego posiadamy różne negacje dla wyrażeń regularnych.
Jeżeli nie chcemy litery "a", to wyrażenie takie zapiszemy jako "[^a]". Jeżeli nie chcemy mieć ciągu "aaa" wewnątrz słowa, użyjemy wyrażenia "^((?!a{3}).)*$" (w tym przypadku ?! jest operatorem negacji).
Jeżeli jednak posiadamy jakieś wyrażenie i chcemy sprawdzić, czy dany string do niego NIE pasuje, możemy sprawdzić dopasowanie, które następnie zanegujemy:
Regex reg = new Regex("a{3}");
bool niePasuje = !(reg.IsMatch(sprawdzaneSlowo));
Jeżeli jesteś zainteresowany tematem wyrażeń regularnych, to bardzo polecam stronę: www.regextester.com
Można na niej na ten temat wiele się nauczyć oraz przetestować swoje wyrażenia regularne.
Mam nadzieję, że taka odpowiedź Cię satysfakcjonuje :)
@ Dzięki
Ile planujesz odcinków z wyrażeń regularnych?
Szczerze mówiąc planowałem tylko jeden.
Jest jakieś zagadnienie z wyrażeń regularnych, które chciałbyś jeszcze poznać?
Maszyna Licząca Widzę że stosunkowo rzadko wrzucasz filmiki, podejrzewam że wynika to z braku czasu więc (pewnie nie tylko ja) wolałbym abyś nie tworzył tych filmików na siłę gdyż boję się o ich jakość. Zauważyłem zresztą że na polskim TH-cam jest mało dobrych kompletnych kursów C#. Także życzę powodzenia w dalszym tworzeniu kursu.
Nie tworzę na siłę. Bardzo lubię wydawać nowe odcinki bo mi też pomaga to przypomnieć i utrwalić sobie pewne rzeczy. Niestety brak czasu dość mocno mnie ogranicza, ale uwierz - tworzę nowe odcinki z wielką przyjemnością i staram się ich tworzyć więcej. Niestety z różnym skutkiem :)
Maszyna Licząca To super a można wiedzieć jak i gdzie nauczyłeś się programować oraz jeśli to nie jest żadną tajemnicą czym zajmujesz się obecnie?
Odpowiedź na oba pytania to: studia.
A tak poważnie - zaczynałem w liceum od oglądania i czytania poradników, potem studia dały mi dużo wiedzy teoretycznej, a teraz realizuję różne projekty, czytam książki o programowaniu oraz prowadzę kanał Maszyna Licząca :)
To Ty nagrywasz jeszcze :D
No pewnie, że nagrywam! Dość wolno mi to idzie, wiem. Ale nagrywam i nagrywać będę! :)
Tak trzymaj, ja dzięki Twoim poradnikom też nagrałem całkiem obszerny kurs C i C# na kanale ;)
Ja liczę bardzo na filmy o dziedziczeniu, polimorfizmie i interfejsach, niestety dalej nie czuję się w tym pewnie, a jak Ty coś wytłumaczysz, to już nie ma opcji, żeby tego nie zrozumieć. :)
Niedługo przejdziemy do programowania obiektowego, a tam to wszystko będzie :)
No to rewelacja! Czekam zatem. :)
ale czy w zapisie (www.)? nie powinno być (www\.)? -przecież szukamy znaku . a nie dowolnego znaku.
Intro ze starego kanału było lepsze :v
Hmmm... No to może czas tutaj też jakieś intro stworzyć... pomyślę nad tym :)
Przecież w systemie hex istnieje coś takiego jak 000000 jest to kolor czarny wyrażony w hex