Z terminalem: używanie wyrażeń regularnych

Jedną z rzeczy, które zawsze kochałem w terminalu Linuksa, jest to, co można osiągnąć za pomocą wyrażeń regularnych. Niezależnie od tego, czy musimy znaleźć skomplikowany tekst, czy zastąpić go czymś innym, użycie wyrażeń regularnych może znacznie uprościć pracę. Zacznijmy od początku:

OSTRZEŻENIE: Ten post to wrzód na dupie. Czytanie tego posta przez cały czas może spowodować utratę przytomności. Przed przeczytaniem całego postu rób przerwy lub zapytaj lekarza lub farmaceutę.

Co to jest wyrażenie regularne?

Wyrażenie regularne to seria znaków specjalnych, które pozwalają nam opisać tekst, który chcemy znaleźć. Na przykład, gdybyśmy chcieli wyszukać słowo „linux”, wystarczyłoby umieścić to słowo w używanym przez nas programie. Samo słowo jest wyrażeniem regularnym. Jak dotąd wydaje się to bardzo proste, ale co zrobić, jeśli chcemy znaleźć wszystkie liczby w określonym pliku? Albo wszystkie wiersze zaczynające się wielką literą? W takich przypadkach nie możesz już sformułować prostego słowa. Rozwiązaniem jest użycie wyrażenia regularnego.

Wyrażenia regularne a wzorce plików.

Zanim przejdziemy do wyrażeń regularnych, chcę wyjaśnić powszechne nieporozumienie dotyczące wyrażeń regularnych. Wyrażenie regularne nie jest tym, co umieszczamy jako parametr w poleceniach takich jak rm, cp itp. W celu odniesienia się do różnych plików na dysku twardym. To byłby wzorzec pliku. Wyrażenia regularne, choć podobne pod tym względem, że używają pewnych typowych znaków, są różne. Wzorzec pliku jest uruchamiany względem plików na dysku twardym i zwraca te, które w pełni pasują do wzorca, podczas gdy wyrażenie regularne jest uruchamiane względem tekstu i zwraca wiersze zawierające wyszukiwany tekst. Na przykład wyrażenie regularne odpowiadające wzorowi *.* byłoby to coś w rodzaju ^.*\..*$

Rodzaje wyrażeń regularnych.

Nie wszystkie programy używają tych samych wyrażeń regularnych. Niewiele mniej. Istnieje kilka mniej lub bardziej standardowych typów wyrażeń regularnych, ale są programy, które nieznacznie zmieniają składnię, zawierają własne rozszerzenia, a nawet używają zupełnie innych znaków. Dlatego też, jeśli chcesz użyć wyrażeń regularnych w programie, którego nie znasz dobrze, pierwszą rzeczą jest przejrzenie podręcznika lub dokumentacji programu, aby zobaczyć, jakie są rozpoznawane przez niego wyrażenia regularne.

Po pierwsze, istnieją dwa główne typy wyrażeń regularnych, które są zawarte w standardzie POSIX, którego używają narzędzia Linuksa. Są to podstawowe i rozszerzone wyrażenia regularne. Wiele poleceń, które działają z wyrażeniami regularnymi, takimi jak grep lub sed, umożliwia używanie obu typów. Opowiem o nich poniżej. Istnieją również wyrażenia regularne w stylu PERL, a także programy takie jak vim czy emacs, które używają ich wariantów. W zależności od tego, co chcemy zrobić, może być bardziej odpowiednie użycie jednego lub drugiego.

Testowanie wyrażeń regularnych.

Składnia wyrażeń regularnych nie jest trywialna. Kiedy musimy napisać skomplikowane wyrażenie regularne, znajdziemy się przed ciągiem znaków specjalnych, których na pierwszy rzut oka nie można zrozumieć, więc aby nauczyć się ich używać, ważne jest, aby mieć sposób na wykonanie wszystkich testów, które chcemy i zobaczymy wyniki łatwo. Dlatego zamierzam teraz umieścić kilka poleceń, za pomocą których możemy wykonać testy i eksperymentować ze wszystkim, czego potrzebujemy, aż zdominujemy wyrażenia regularne.

Pierwsza to polecenie grep. Jest to polecenie, którego będziemy najczęściej używać do wyszukiwania. Składnia jest następująca:

grep [-E] 'REGEX' FICHERO
COMANDO | grep [-E] 'REGEX'

Zalecam zawsze umieszczanie wyrażeń regularnych w pojedynczych cudzysłowach, aby powłoka nas nie wciągnęła. Pierwszym sposobem jest znalezienie wyrażenia regularnego w pliku. Drugi umożliwia filtrowanie danych wyjściowych polecenia za pomocą wyrażenia regularnego. Domyślnie grep używa podstawowych wyrażeń regularnych. Opcja -E służy do używania rozszerzonych wyrażeń regularnych.

Sztuczka, która może pomóc nam zobaczyć, jak działają wyrażenia regularne, to włączenie koloru w poleceniu grep. W ten sposób część tekstu, która pasuje do wyrażenia regularnego, którego używamy, zostanie podświetlona. Aby aktywować kolor w poleceniu grep, po prostu upewnij się, że zmienna środowiskowa GREP_OPTIONS zawierać wartość --color, co można zrobić za pomocą tego polecenia:

GREP_OPTIONS=--color

Możemy umieścić go w .bashrc, aby zawsze był aktywowany.

Innym sposobem używania wyrażeń regularnych jest użycie polecenia sed. Jest to bardziej odpowiednie do zastępowania tekstu, ale może być również używane do wyszukiwania. Składnia tego byłaby następująca:

sed -n[r] '/REGEX/p' FICHERO
COMANDO | sed -n[r] '/REGEX/p'

Polecenie sed również domyślnie używa podstawowych wyrażeń regularnych, można używać rozszerzonych wyrażeń regularnych z opcją -r.

Innym poleceniem, które również chcę nazwać, jest awk. To polecenie może być używane do wielu rzeczy, ponieważ umożliwia pisanie skryptów we własnym języku programowania. Jeśli chcemy znaleźć wyrażenie regularne w pliku lub na wyjściu polecenia, sposób jego użycia byłby następujący:

awk '/REGEX/' FICHERO
COMANDO | awk '/REGEX/'

To polecenie zawsze używa rozszerzonych wyrażeń regularnych.

Do wykonania naszych testów będziemy również potrzebować tekstu, który posłuży jako przykład do jego przeszukiwania. Możemy użyć następującego tekstu:

- Lista de páginas wiki:

ArchLinux: https://wiki.archlinux.org/
Gentoo: https://wiki.gentoo.org/wiki/Main_Page
CentOS: http://wiki.centos.org/
Debian: https://wiki.debian.org/
Ubuntu: https://wiki.ubuntu.com/

- Fechas de lanzamiento:

Arch Linux: 11-03-2002
Gentoo: 31/03/2002
CentOs: 14-05-2004 03:32:38
Debian: 16/08/1993
Ubuntu: 20/10/2004

Desde Linux Rulez.

To jest tekst, którego użyję do przykładów pozostałej części postu, więc polecam skopiować go do pliku, aby mieć go pod ręką z terminala. Możesz wpisać dowolną nazwę. Nazwałem to regex.

Lekcja początkowa.

Teraz mamy wszystko, czego potrzebujemy, aby rozpocząć testowanie wyrażeń regularnych. Chodźmy krok po kroku. Zamierzam zamieścić kilka przykładów wyszukiwań za pomocą wyrażeń regularnych, w których wyjaśnię, do czego służy każdy znak. Nie są to zbyt dobre przykłady, ale ponieważ będę miał bardzo długi post, nie chcę już tego komplikować. I zamierzam tylko zarysować powierzchnię tego, co można zrobić za pomocą wyrażeń regularnych.

Najprostszym ze wszystkich jest wyszukanie konkretnego słowa, na przykład przypuśćmy, że chcemy wyszukać wszystkie wiersze zawierające słowo „Linux”. To jest najłatwiejsze, ponieważ musimy tylko napisać:

grep 'Linux' regex

I możemy zobaczyć wynik:

łukLinux: https://wiki.archlinux.org/ Arch Linux: 11-03-2002 Od Linux Ruleza.

To są trzy linie zawierające słowo „Linux”, które, jeśli użyliśmy sztuczki z kolorami, będzie podświetlone. Zauważ, że rozpoznaje słowo, którego szukamy, nawet jeśli jest częścią dłuższego słowa, jak w „ArchLinux”. Jednak nie wyróżnia słowa „linux”, które pojawia się w adresie URL „https://wiki.archlinux.org/”. Dzieje się tak, ponieważ pojawia się tam z małą literą „l” i szukaliśmy go wielkimi literami. Polecenie grep ma do tego opcje, ale nie będę o nich mówić w artykule o wyrażeniach regularnych.

Za pomocą tego prostego testu możemy wyciągnąć pierwszy wniosek:

  • Zwykły znak umieszczony w wyrażeniu regularnym pasuje do siebie.

To znaczy, że jeśli umieścisz literę „a”, będzie szukać litery „a”. Wydaje się logiczne, prawda? 🙂

Teraz przypuśćmy, że chcemy wyszukać słowo „CentO”, po którym następuje dowolny znak, ale tylko jeden znak. W tym celu możemy użyć znaku „.”, Który jest symbolem wieloznacznym pasującym do dowolnego znaku, ale tylko jednego:

grep 'CentO.' regex

A wynik jest taki:

CentOS: http://wiki.centos.org/
centy: 14-05-2004 03:32:38

Co oznacza, że ​​zawiera „S” w „CentOS”, chociaż w jednym przypadku jest to duże, aw innym małe. Gdyby w tym miejscu pojawił się jakikolwiek inny znak, również by go obejmował. Mamy już drugą zasadę:

  • Charakter "." pasuje do dowolnego znaku.

Nie jest to już tak banalne, jak się wydawało, ale z tym niewiele możemy zrobić. Przejdźmy trochę dalej. Załóżmy, że chcemy znaleźć wiersze, w których pojawiają się lata 2002 i 2004. Wyglądają jak dwa wyszukiwania, ale można je wykonać naraz w następujący sposób:

grep '200[24]' regex

Co oznacza, że ​​chcemy znaleźć liczbę 200, po której następuje 2 lub 4. Wynik jest taki:

ArchLinux: 11-03-2002
Gentoo: 31.2002
CentOS: 14-05-2004 03:32:38
Ubuntu: 20/10/2004

Co prowadzi nas do trzeciej zasady:

  • Wiele znaków zawartych w nawiasach kwadratowych odpowiada dowolnemu ze znaków w nawiasach.

Nawiasy zapewniają większy luz. można ich również używać do wykluczania znaków. Na przykład załóżmy, że chcemy znaleźć witryny, w których występuje znak „:”, ale nie występuje po nim „/”. Polecenie wyglądałoby tak:

grep ':[^/]' regex

Wystarczy umieścić „^” jako pierwszy znak w nawiasie. Możesz umieścić wszystkie postacie, które chcesz poniżej. Wynik tego ostatniego polecenia jest następujący:

ArchLinux: https://wiki.archlinux.org/
Gentoo: https://wiki.gentoo.org/wiki/Main_Page
CentOS: http://wiki.centos.org/
Debian: https://wiki.debian.org/
Ubuntu: https://wiki.ubuntu.com/
Arch Linux: 11-03-2002 Gentoo: CentOs 31: 14-05-2004 03:32:38 Debian: 16 Ubuntu: 20/10/2004

Teraz „:” za nazwami dystrybucji jest podświetlony, ale nie w adresach URL, ponieważ adresy URL mają po sobie znak „/”.

  • Umieszczenie znaku „^” na początku nawiasu powoduje dopasowanie dowolnego znaku oprócz pozostałych znaków w nawiasie.

Inną rzeczą, którą możemy zrobić, jest określenie zakresu znaków. Na przykład, aby wyszukać dowolną liczbę, po której następuje „-”, wyglądałoby to tak:

grep '[0-9]-' regex

W ten sposób określamy znak od 0 do 9, a następnie znak minus. Zobaczmy wynik:

ArchLinux: 11-03-2002 CentOs: 14-05-2004 03: 32: 38

W nawiasach można określić wiele zakresów, aby nawet mieszać zakresy z pojedynczymi znakami.

  • Umieszczenie dwóch znaków oddzielonych „-” w nawiasach pozwala dopasować dowolny znak z zakresu.

Zobaczmy teraz, czy możemy wybrać pierwszą część adresów URL. Ten z napisem „http” lub „https”. Różnią się tylko ostatnim „s”, więc zróbmy to w następujący sposób:

grep -E 'https?' regex

Znak zapytania jest używany, aby znak po lewej stronie był opcjonalny. Ale teraz dodaliśmy opcję -E do polecenia. Dzieje się tak, ponieważ przesłuchanie jest cechą rozszerzonych wyrażeń regularnych. Do tej pory używaliśmy podstawowych wyrażeń regularnych, więc nie musieliśmy niczego wpisywać. Zobaczmy wynik:

ArchLinux: https: //wiki.archlinux.org/ Gentoo: https: //wiki.gentoo.org/wiki/Main_Page CentOS: http: //wiki.centos.org/ Debian: https: //wiki.debian.org/ Ubuntu: https: //wiki.ubuntu.com/

Mamy więc już nową regułę:

  • Znak, po którym następuje „?” pasuje do tego znaku lub żadnego. Dotyczy to tylko rozszerzonych wyrażeń regularnych.

Teraz będziemy szukać dwóch zupełnie różnych słów. Zobaczmy, jak znaleźć wiersze zawierające zarówno słowo „Debian”, jak i „Ubuntu”.

grep -E 'Debian|Ubuntu' regex

Pionowym paskiem możemy oddzielić dwa lub więcej różnych wyrażeń regularnych i znaleźć wiersze pasujące do dowolnego z nich:

Debian: https://wiki.debian.org/
Ubuntu: https://wiki.ubuntu.com/
Debian: 16 / 08 / 1993
Ubuntu: 20 / 10 / 2004
  • Znak «|» służy do oddzielenia kilku wyrażeń regularnych i dopasowań do dowolnego z nich. Dotyczy to również rozszerzonych wyrażeń regularnych.

Kontynuujmy. Teraz będziemy szukać słowa „Linux”, ale tylko tam, gdzie nie jest ono powiązane z innym słowem po lewej stronie. Możemy to zrobić tak:

grep '\

Tutaj ważnym znakiem jest „<”, ale należy go zmienić, umieszczając przed nim „\”, aby grep zinterpretował go jako znak specjalny. Wynik jest następujący:

łuk Linux: 11-03-2002 Od Linux Ruleza.

Możesz także użyć "\>" do wyszukania słów, które nie znajdują się obok siebie. Przejdźmy do przykładu. Wypróbujmy to polecenie:

grep 'http\>' regex

Wynik, który generuje, jest następujący:

CentOS: http: //wiki.centos.org/

Wyszedł „Http”, ale nie „https”, ponieważ w „https” nadal znajduje się znak po prawej stronie litery „p”, który może być częścią słowa.

  • Znaki „<” i „>” dopasowują odpowiednio początek i koniec słowa. Te znaki muszą zostać zmienione, aby nie były interpretowane jako znaki dosłowne.

Podchodzimy do rzeczy trochę bardziej skomplikowanych. Znak „+” oznacza co najmniej jeden powtórzony znak po jego lewej stronie. Ten znak jest dostępny tylko z rozszerzonymi wyrażeniami regularnymi. Dzięki niemu możemy na przykład wyszukać ciągi kilku liczb w rzędzie zaczynających się od „:”.

grep -E ':[0-9]+' regex

Wynik:

CentOs: 14-05-2004 03: 32: 38

Liczba 38 jest również podświetlona, ​​ponieważ również zaczyna się od „:”.

  • Znak „+” oznacza znak po jego lewej stronie, powtórzony co najmniej raz.

Możesz także kontrolować liczbę powtórzeń za pomocą „{” i „}”. Chodzi o to, aby umieścić w nawiasach liczbę, która wskazuje dokładną liczbę żądanych powtórzeń. Możesz także podać zakres. Zobaczmy przykłady dwóch przypadków.

Najpierw znajdziemy wszystkie czterocyfrowe sekwencje, które istnieją:

grep '[0-9]\{4\}' regex

Zauważ, że musisz opuścić nawiasy klamrowe, jeśli używasz podstawowych wyrażeń regularnych, ale nie, jeśli używasz rozszerzonych. Przy rozszerzeniu wyglądałoby to tak:

grep -E '[0-9]{4}' regex

W obu przypadkach wynik byłby taki:

ArchLinux: 11-03-2002
Gentoo: 31.2002
CentOS: 14-05-2004 03:32:38
Debian: 16/08/1993
Ubuntu: 20 /2004
  • Znaki „{” i „}” z liczbą między nimi pasują do poprzedniego znaku powtórzonego określoną liczbę razy.

Teraz drugi przykład z nawiasami klamrowymi. Załóżmy, że chcemy znaleźć słowa, które mają od 3 do 6 małych liter. Możemy wykonać następujące czynności:

grep '[a-z]\{3,6\}' regex

Wynik byłby taki:

- Lista de stronas wiki: DOrchLinuksy: https:/ /wiki.archlinux.org/ Gentuzjastyczny: https:/ /wiki.Gento.org/wiki/Main_Pwiek
CentOS: http:/ /wiki.CentOS.org/ DEbian: https:/ /wiki.debian.org/ ORślepy zaułek: https:/ /wiki.ubuntu.opcji binarnych/ - Ftęsknisz de szalupa: DOrch Linuksy: 11-03-2002 G.entuzjastyczny: 31 CentOs: 14-05-2004 03:32:38
DEbian: 16 Uślepy zaułek: 20 DTo jest Linuksy Rulez.

Co, jak widać, nie wygląda tak, jak chcieliśmy. Dzieje się tak, ponieważ wyrażenie regularne znajduje litery w innych słowach, które są dłuższe. Wypróbujmy inną wersję:

grep '\<[a-z]\{3,6\}\>' regex

Wynik:

- Lista stron wiki: ArchLinux: https:/ /wiki.archlinux.org/ Gentoo: https:/ /wiki.Gento.org/wiki/ Main_Page CentOS: http:/ /wiki.CentOS.org/ Debian: https:/ /wiki.debian.org/ Ubuntu: https:/ /wiki.ubuntu.opcji binarnych/

To już wygląda bardziej na to, czego chcieliśmy. To, co zrobiliśmy, wymaga, aby słowo zaczynało się tuż przed pierwszą literą i kończyło się tuż po ostatniej.

  • Znaki „{” i „}” z dwiema liczbami między nimi oddzielonymi przecinkiem odpowiadają poprzednim znakom powtórzonym tyle razy, ile wskazują te dwie cyfry.

Spójrzmy teraz na znak, który jest liczbą pierwszą „+”. To jest "*" i jego działanie jest bardzo podobne tylko to, że dopasowuje dowolną liczbę znaków, w tym zero. Oznacza to, że robi to samo, co „+”, ale nie wymaga, aby znak po jego lewej stronie pojawił się w tekście. Na przykład spróbujmy poszukać tych adresów, które zaczynają się na wiki, a kończą na org:

grep 'wiki.*org' regex

Zobaczmy wynik:

ArchLinux: https: //wiki.archlinux.org/ Gentoo: https: //wiki.gentoo.org/ wiki / Main_Page CentOS: http: //wiki.centos.org/ Debian: https: //wiki.debian.org/

Doskonały.

Teraz ostatnia postać, którą zobaczymy. Znak „\” służy do zmiany znaczenia znaku po jego prawej stronie, dzięki czemu traci swoje specjalne znaczenie. Na przykład: Załóżmy, że chcemy zlokalizować linie, które kończą się punktem. Pierwszą rzeczą, która może nam przyjść do głowy, może być:

grep '.$' regex

Wynik nie jest tym, czego szukamy:

- Lista stron wiki:
ArchLinux: https://wiki.archlinux.org/
Gentoo: https://wiki.gentoo.org/wiki/Main_Page
CentOS: http://wiki.centos.org/
Debiana: https://wiki.debian.org/
Ubuntu: https://wiki.ubuntu.com/
- Daty wydania: Arch Linux: 11-03-2002
Gentoo: 312
CentOs: 14-05-2004 03:32:38
Debian: 163
Ubuntu: 204
Desde Linux Rulez.

Dzieje się tak, ponieważ „.” dopasowuje wszystko, tak że wyrażenie regularne dopasowuje ostatni znak każdego wiersza, cokolwiek to jest. Rozwiązanie jest następujące:

grep '\.$' regex

Teraz wynik jest taki, jakiego chcemy:

Desde Linux Rulez.

Gra się skończyła

Chociaż temat wyrażeń regularnych jest tak złożony, że podałbym serię artykułów, myślę, że zadałem już wystarczająco dużo bólu. Jeśli udało Ci się przyjechać, gratuluję. A jeśli przeczytałeś to wszystko za jednym zamachem, weź aspirynę czy coś, bo to nie może być dobre.

Na razie to wszystko. Jeśli podoba Ci się ten artykuł, może napiszesz inny. W międzyczasie radzę wypróbować wszystkie wyrażenia regularne w terminalu, aby wyraźnie zobaczyć, jak działają. I pamiętaj: tylko Chuck Norris może analizować HTML przy użyciu wyrażeń regularnych.


28 komentarzy, zostaw swoje

Zostaw swój komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

*

*

  1. Odpowiedzialny za dane: Miguel Ángel Gatón
  2. Cel danych: kontrola spamu, zarządzanie komentarzami.
  3. Legitymacja: Twoja zgoda
  4. Przekazywanie danych: Dane nie będą przekazywane stronom trzecim, z wyjątkiem obowiązku prawnego.
  5. Przechowywanie danych: baza danych hostowana przez Occentus Networks (UE)
  6. Prawa: w dowolnym momencie możesz ograniczyć, odzyskać i usunąć swoje dane.

  1.   Ezekiel powiedział

    Jakie byłoby nasze życie bez wyrażenia regularnego?
    Artykuł jest bardzo przydatny, ale będę go czytać po trochu. Dziękuję Ci bardzo.

    1.    Heksborg powiedział

      Dziękuję za komentarz. Nadal nie wierzę, że mój artykuł wyszedł. 🙂 Wyszedł z pewnym błędem, ale mam nadzieję, że będzie przydatny. 🙂

  2.   Skalibur powiedział

    Dziękuję ci ssssssss! ..

    Minęło dużo czasu, odkąd musiałem trochę przestudiować wyrażenia regularne .. .. Dziękuję za nauczanie .. i przewodnik krok po kroku, jak nauczyć się każdego z nich ..

    Bardzo dobrze! .. .. Idę po tę aspirynę .. ee

    1.    Heksborg powiedział

      Nie ma problemu. Odwaga i że wyrażenia regularne nie mogą z tobą. 🙂

  3.   tanraks powiedział

    Fantastyczny post! Dobra robota. Zastanawiam się, ile godzin ci to zajęło 😀

    1.    Heksborg powiedział

      LOL!! Pytanie brzmi: ile godzin zajęłoby mi to, gdybym powiedział wszystko, co chciałem powiedzieć? Nieskończony !! 🙂

  4.   Tammuz powiedział

    jedno, czego nie wiedziałem, dobry artykuł!

    1.    Heksborg powiedział

      Dziękuję Ci. Z przyjemnością się nim z tobą podzielę.

  5.   helena_ryu powiedział

    świetne wyjaśnienie. gratulacje! naprawdę przydatne!

    1.    Heksborg powiedział

      Cieszę się, że znalazłeś to przydatne. Więc pisanie jest przyjemnością.

  6.   anty powiedział

    To powinno znaleźć się w specjalnym miejscu. Podobnie jak Polecane, ale mają bardzo specyficzną użyteczność. Całkiem przydatne, chociaż chciałbym, aby było to zastosowane do Vima.

    1.    Heksborg powiedział

      To jest kwestia zadawania sobie pytania. Mam na myśli jeszcze kilka artykułów na temat wyrażeń regularnych. I mógłbym w nich mówić o vimie. Ma pewne różnice w stosunku do tego, co wyjaśniłem w tym artykule. Trzeba się tym zająć. 🙂

  7.   Fernando powiedział

    Dobrze!

    Twój artykuł jest bardzo dobry, jest ciekawy, niedawno (właśnie) opublikowałem na swojej stronie wpis, który przygotowywałem od kilku dni, w którym zebrałem listę metaznaków dla wyrażeń regularnych i kilka przykładów. I wejście było sprawiedliwe DesdeLinux i zobacz wpis na ten sam temat!

    Jeśli to jakieś pocieszenie, moje jest DUŻO WIĘCEJ CIPKI 😀

    Z pewnością regex są jedną z najbardziej przydatnych rzeczy, zwykle używam ich do przycinania danych wyjściowych poleceń i zachowania części, która mnie interesuje, a następnie interakcji z nią na przykład w skrypcie bash. Używałem ich również często na studiach i mają one kluczowe znaczenie przy budowie kompilatorów (w definicji leksykografii i parserów). Krótko mówiąc, cały świat.

    Pozdrawiamy i bardzo, bardzo dobra robota.

    1.    Heksborg powiedział

      Dziękuję bardzo.

      Podobał mi się również twój artykuł. Jest bardziej zwięzły niż mój. Może służyć jako szybkie odniesienie. To zbieg okoliczności, że napisaliśmy je w tym samym czasie. Widać, że temat interesuje ludzi. 🙂

  8.   Elery powiedział

    Wyrażenia regularne dla manekinów =), teraz jest dla mnie bardziej jasne, przy okazji, jednym ze sposobów uzyskania wyniku z kolorem dla grep jest utworzenie aliasu w .bashrc alias grep = 'grep –color = always', na wypadek to działa dla kogoś.

    pozdrowienia

    1.    Heksborg powiedział

      Prawdziwe. To inny sposób na zrobienie tego. Dzięki za wkład. 🙂

  9.   KZKG ^ Gaara powiedział

    O_O… wkład !!! O_O ...
    Bardzo dziękuję za post, czekałem na coś takiego od jakiegoś czasu lol, zostawiam otwarte, żeby spokojnie czytać w domu bez kłopotów z koncentracją lol.

    Dzięki za artykuł, naprawdę 😀

    1.    Heksborg powiedział

      Wiedziałem, że ci się spodoba. LOL!! Prawda jest taka, że ​​wielu rzeczy brakuje, ale myślę już o drugiej części. 🙂

  10.   Eliecer Tates powiedział

    Świetny artykuł, gdybym tylko go wczoraj przeczytał, zajęcia, które dziś wygłosiłem, byłyby jeszcze łatwiejsze dla moich uczniów!

    1.    Heksborg powiedział

      LOL!! Szkoda, że ​​się spóźniłem, ale cieszę się, że to przydatne. 🙂

  11.   LeoToro powiedział

    Wreszcie !!!, super dobry post…. W końcu znalazłem coś, co jasno wyjaśnia wyrażenia regularne… ..

    1.    Heksborg powiedział

      Jest tam wiele informacji, ale trudniej jest znaleźć coś, co jest łatwe do zrozumienia. Cieszę się, że wypełniłem tę lukę. 🙂

      Pozdrowienia.

  12.   Szekspir Rodos powiedział

    Hej, potrzebuję pomocy, muszę poszukać w / var / logs w formacie: yymmdd, a logi to 130901.log -130901.log, muszę wyszukać wszystkie te, które są od 1 września do 11 października , Jedyne, co udało mi się zrobić, to usunąć cały wrzesień, ale nie wiem, jak zrobić cały łańcuch:

    np .: 1309 [0-3] zwraca dzienniki z okresu od 1 do 30 września, ale nie wiem, jak to zrobić w tym samym łańcuchu od 1 do 11 października.

    1.    Heksborg powiedział

      Robienie tego za pomocą wyrażeń regularnych jest nieco skomplikowane. Wydaje mi się, że coś takiego może zadziałać:

      13(09[0-3]|10(0|1[01]))

      Jest to rozszerzone wyrażenie regularne. Nie mówisz, jakiego narzędzia używasz, więc nie mogę podać więcej szczegółów.

      W każdym razie myślę, że tak jest, zamiast używać wyrażeń regularnych, lepiej zrobić to za pomocą find. Możesz spróbować czegoś takiego:

      odnaleźć. -newermt '01 wrz '-a! -newermt '11 oct '-print

      Szczęście. Mam nadzieję, że to może ci pomóc.

  13.   chipo powiedział

    Witam! Przede wszystkim chciałem podziękować za Waszą pracę, ponieważ ta strona jest jedną z trzech moich „top 3” najlepszych witryn linuksowych.
    Ćwiczyłem i nie wiedziałem, dlaczego RegExp na numerze telefonu nie działa i chodziło o to, że brakowało mi „-E” (co zrozumiałem dzięki temu wpisowi).
    Chciałem Cię zapytać, jeśli nie znasz dobrego pliku PDF lub strony, na której są ćwiczenia z RegExp, chociaż przy odrobinie wyobraźni możesz poćwiczyć ich wymyślanie samodzielnie.

    Pozdrowienia, Pablo.

  14.   Cally powiedział

    Bardzo dobrze, po prostu wszystko przeczytałem i tak, teraz potrzebuję aspiryny 🙂

  15.   Oscar powiedział

    Najlepsze wyjaśnienie wyrażeń regularnych, jakie widziałem. Dziękuję autorowi za udostępnienie tej pracy.

    Pozdrowienia.

  16.   Aleksandra powiedział

    Naprawdę podobało mi się bardzo dobre wyjaśnienie