JavaRush /Blog Java /Random-PL /RegEx: 20 krótkich kroków do opanowania wyrażeń regularny...
Artur
Poziom 40
Tallinn

RegEx: 20 krótkich kroków do opanowania wyrażeń regularnych. Część 1

Opublikowano w grupie Random-PL
Oryginał tego artykułu znajduje się tutaj . Prawdopodobnie nie ma czegoś takiego jak za dużo teorii i na końcu artykułu podam kilka linków do bardziej szczegółowych materiałów na temat wyrażeń regularnych. Ale wydawało mi się, że rozpoczęcie zagłębiania się w temat taki jak wyrażenia regularne byłoby znacznie ciekawsze, gdyby istniała możliwość nie tylko wkucia, ale także natychmiastowego utrwalenia wiedzy, wykonując po drodze drobne zadania. RegEx: 20 krótkich kroków do opanowania wyrażeń regularnych.  Część 1 - 1Zacznijmy. Zazwyczaj przeciwnicy używania wyrażeń regularnych („RegEx” lub po prostu „regex”) w programowaniu cytują następujący cytat przypisywany Jamiemu Zawinskiemu: „Niektórzy ludzie, w obliczu problemu, myślą: «Wiem, użyję wyrażeń regularnych .'„Teraz mają dwa problemy”. Tak naprawdę używanie wyrażeń regularnych nie jest jeszcze dobrym ani złym pomysłem. A to samo w sobie nie spowoduje problemów i nie rozwiąże żadnego z nich. To tylko narzędzie. Sposób, w jaki go użyjesz (dobry czy zły), decyduje o tym, jakie rezultaty zobaczysz. Jeśli na przykład spróbujesz użyć wyrażenia regularnego do utworzenia parsera HTML, najprawdopodobniej odczujesz ból . Ale jeśli chcesz po prostu wyodrębnić na przykład znaczniki czasu z niektórych ciągów znaków, prawdopodobnie wszystko będzie w porządku. Aby ułatwić Ci opanowanie wyrażeń regularnych, przygotowałem tę lekcję, która pomoże Ci opanować wyrażenia regularne od podstaw w zaledwie dwudziestu krótkich krokach. Ten samouczek koncentruje się głównie na podstawowych pojęciach wyrażeń regularnych i zagłębia się w bardziej zaawansowane tematy tylko w razie potrzeby.

Krok 1: Po co używać wyrażeń regularnych

RegEx: 20 krótkich kroków do opanowania wyrażeń regularnych.  Część 1 - 2Wyrażenia regularne służą do wyszukiwania dopasowań w tekście przy użyciu określonych wzorców (wzorców). Za pomocą wyrażenia regularnego możemy w łatwy i prosty sposób wyodrębnić słowa z tekstu, a także pojedyncze znaki dosłowne i meta oraz ich sekwencje spełniające określone kryteria. Oto, co mówi nam o nich Wikipedia : Wyrażenia regularne to formalny język służący do wyszukiwania i manipulowania podciągami w tekście, oparty na użyciu metaznaków (znaków wieloznacznych). Do wyszukiwania używany jest przykładowy ciąg znaków (wzorzec angielski, w języku rosyjskim często nazywany „szablonem”, „maską”), składający się z symboli i metasymboli oraz określający regułę wyszukiwania. Aby manipulować tekstem, dodatkowo określa się ciąg zastępczy, który może również zawierać znaki specjalne. Wzór może być tak prosty, jak słowo dogw tym zdaniu:
Szybki brązowy lis przeskakuje leniwego psa.
To wyrażenie regularne wygląda następująco:
pies
...Dość łatwe, prawda? Wzorem może być także dowolne słowo zawierające literę o. Wyrażenie regularne służące do znalezienia takiego wzorca może wyglądać następująco:
\ Wow * _
( Możesz wypróbować to wyrażenie regularne tutaj .) Zauważysz, że w miarę jak wymagania dotyczące „dopasowywania” stają się coraz bardziej złożone, wyrażenie regularne również staje się bardziej złożone. Istnieją dodatkowe formy notacji służące do określania grup znaków i dopasowywania powtarzających się wzorców, które wyjaśnię poniżej. Ale co możemy z tym zrobić, gdy tylko znajdziemy dopasowanie do wzorca w jakimś tekście? Nowoczesne silniki wyrażeń regularnych umożliwiają wyodrębnianie znaków lub sekwencji znaków (podciągów) z zawartego tekstu, usuwanie ich lub zastępowanie innym tekstem. Ogólnie rzecz biorąc, wyrażenia regularne służą do analizowania i manipulowania tekstem. Możemy wyodrębnić np. podciągi wyglądające jak adresy IP i następnie spróbować je zweryfikować. Możemy też wyodrębnić nazwiska i adresy e-mail i przechowywać je w bazie danych. Możesz też użyć wyrażeń regularnych, aby znaleźć poufne informacje (takie jak numer paszportu lub numer telefonu) w wiadomościach e-mail i ostrzec użytkownika, że ​​może narazić się na ryzyko. Regex to naprawdę wszechstronne narzędzie, którego łatwo się nauczyć, ale trudno opanować: „Tak jak istnieje różnica między dobrym zagraniem utworu muzycznego a tworzeniem muzyki, istnieje różnica między znajomością wyrażeń regularnych a ich zrozumieniem”. - Jeffrey E. F. Friedl, Opanowanie wyrażeń regularnych

Krok 2: Nawiasy kwadratowe[]

Najprostsze i łatwe do zrozumienia wyrażenia regularne to te, które po prostu szukają dopasowania znak po znaku między wzorcem wyrażenia regularnego a ciągiem docelowym. Spróbujmy na przykład znaleźć kota: RegEx: 20 krótkich kroków do opanowania wyrażeń regularnych.  Część 1 - 3
wzór: kot
ciąg: Kot został przecięty, gdy wbiegł pod samochód.
mecze:      ^^^
( Jak to działa w praktyce - zobacz tutaj ) Uwaga! Wszystkie rozwiązania przedstawiono tutaj jedynie jako możliwe rozwiązania. W wyrażeniach regularnych, podobnie jak w ogóle w programowaniu, te same problemy można rozwiązać na różne sposoby. Jednak oprócz ścisłego porównania znak po znaku, możemy również określić alternatywne dopasowania za pomocą nawiasów kwadratowych:
wzór: ca[rt]
ciąg: Kot został przecięty, gdy wbiegł pod samochód.
mecze:      ^^^ ^^^
( Jak to działa ) Otwieranie i zamykanie nawiasów kwadratowych informuje silnik wyrażeń regularnych, że powinien pasować do dowolnego z określonych znaków, ale tylko do jednego. Powyższe wyrażenie regularne nie znajdzie np. cartcałego słowa, a jedynie jego część:
wzór: ca[rt]
ciąg: Kot został przecięty, gdy wbiegł pod wózek.
mecze:      ^^^ ^^^
( Jak to działa ) Kiedy używasz nawiasów kwadratowych, mówisz silnikowi wyrażeń regularnych, aby dopasowywał tylko jeden ze znaków zawartych w nawiasach. Silnik znajduje znak c, następnie znak a, ale jeśli następnym znakiem nie jest rlub t, to nie jest to pełne dopasowanie. Jeśli znajdzie ca, a następnie albo r, albo t, zatrzyma się. Nie będzie próbował dopasować większej liczby znaków, ponieważ nawiasy kwadratowe wskazują, że należy dopasować tylko jeden z zawartych znaków. Kiedy znajdzie ca, znajduje rsłowo next carti zatrzymuje się, ponieważ znalazł już dopasowanie do sekwencji car.

Cele szkoleniowe:

Napisz wyrażenie regularne pasujące do wszystkich 10 wzorców hadz Hadtego fragmentu nieprzetłumaczalnych kalamburów w lokalnym dialekcie:
wzór:
ciąg znaków: Jim, gdzie Bill „miał” , miał „miał” . „Miał” było prawidłowe.
mecze:                  ^^^ ^^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^^
( Zobacz możliwe rozwiązanie tutaj ) A co z nazwami wszystkich zwierząt w następnym zdaniu?
wzór:
ciąg znaków: Nietoperz, kot i szczur weszli do baru...
mecze:    ^^^ ^^^ ^^^
( Możliwe rozwiązanie ) Lub jeszcze prościej: znajdź słowa barlub bat:
wzór:
ciąg znaków: Nietoperz, kot i szczur weszli do baru...
mecze:    ^^^ ^^^
( Możliwe rozwiązanie ) Teraz nauczyliśmy się już pisać mniej lub bardziej złożone wyrażenia regularne, a jesteśmy dopiero w kroku 2! Kontynuujmy!

Krok 3: Sekwencje ucieczki

RegEx: 20 krótkich kroków do opanowania wyrażeń regularnych.  Część 1 - 4W poprzednim kroku dowiedzieliśmy się o nawiasach kwadratowych []i o tym, jak pomagają nam znaleźć alternatywne dopasowania za pomocą silnika regex. Co jednak, jeśli chcemy znaleźć dopasowania w postaci samych nawiasów kwadratowych otwartych i zamkniętych []? Gdy chcieliśmy znaleźć dopasowanie słowa znak po znaku cat, udostępniliśmy silnikowi wyrażeń regularnych następującą sekwencję znaków ( cat). Spróbujmy znaleźć nawiasy kwadratowe []w ten sam sposób:
wzór: [] 
ciąg: Nie można dopasować [] za pomocą wyrażenia regularnego! Będziesz tego żałować!
mecze: 
( Zobaczmy, co się stało ) Coś jednak nie zadziałało... Dzieje się tak, ponieważ znaki nawiasów kwadratowych działają jak specjalne znaki mechanizmu regex, które są zwykle używane do wskazania czegoś innego i nie są dosłownym wzorcem, który sam je dopasowuje. Jak pamiętamy z kroku 2, służą one do znalezienia alternatywnych dopasowań, tak aby silnik regex mógł dopasować dowolny znak zawarty pomiędzy nimi. Jeśli nie umieścisz między nimi żadnych znaków, może to spowodować błąd. Aby dopasować te znaki specjalne, musimy je poprzedzić znakiem ukośnika odwrotnego \. Ukośnik odwrotny (lub ukośnik odwrotny) to kolejny znak specjalny, który mówi silnikowi wyrażeń regularnych, aby dosłownie szukał następnego znaku, zamiast używać go jako metaznaku. Silnik regex będzie wyszukiwał tylko znaki [i ]dosłownie, jeśli oba są poprzedzone ukośnikiem odwrotnym:
wzór: \[\]
ciąg znaków: Nie można dopasować [] za pomocą wyrażenia regularnego! Będziesz tego żałować!
mecze:                  ^^ 
( Zobaczmy, co stało się tym razem ) OK, a co jeśli chcemy znaleźć sam ukośnik odwrotny? Odpowiedź jest prosta. Ponieważ ukośnik odwrotny \jest również znakiem specjalnym, należy go również zmienić. Jak? Ukośnik wsteczny!
wzór: \\
ciąg znaków: C:\Users\Tanja\Pictures\Dogs
mecze:    ^ ^ ^ ^
( Ten sam przykład w praktyce ) Tylko znaki specjalne powinny być poprzedzone ukośnikiem odwrotnym. Wszystkie pozostałe znaki są domyślnie interpretowane dosłownie. Na przykład wyrażenie regularne tdosłownie dopasowuje tylko tmałe litery:
wzór: t
ciąg: ttt
mecze: ^ ^ ^ ^
( Przykład ) Jednak ta sekwencja \tdziała inaczej. Jest to szablon do wyszukiwania znaku tabulacji:
wzór: \t
ciąg: ttt
mecze:   ^ ^ ^
( Przykład ) Niektóre typowe sekwencje specjalne obejmują \n(podziały wierszy w stylu UNIX) i \r(używane w podziałach wierszy w stylu systemu Windows \r\n). \rjest znakiem „powrotu karetki” i \nznakiem „przesuwu wiersza”, przy czym oba te znaki zostały zdefiniowane wraz ze standardem ASCII, gdy dalekopisy były nadal w powszechnym użyciu. Inne popularne sekwencje ucieczki zostaną omówione w dalszej części tego samouczka.

W międzyczasie wzmocnijmy materiał kilkoma prostymi łamigłówkami:

Spróbuj napisać wyrażenie regularne, aby znaleźć... wyrażenie regularne ;) Wynik powinien wyglądać mniej więcej tak:
wzór:
ciąg znaków: ...dopasować to wyrażenie regularne ` \[\] ` do wyrażenia regularnego?
mecze:                       ^^^^	
( Rozwiązanie ) Udało Ci się? Dobrze zrobiony! Teraz spróbuj utworzyć wyrażenie regularne, aby wyszukać sekwencje ucieczki takie jak ta:
wzór:
ciąg znaków: ` \r `, ` \t ` i ` \n ` to sekwencje ucieczki wyrażeń regularnych.
mecze:   ^^ ^^ ^^
( Rozwiązanie )

Krok 4: szukaj „dowolnego” znaku za pomocą kropki.

RegEx: 20 krótkich kroków do opanowania wyrażeń regularnych.  Część 1 - 5Pisząc rozwiązania dopasowujące sekwencję ucieczki, które widzieliśmy w poprzednim kroku, mogłeś się zastanawiać: „Czy mogę dopasować znak odwrotnego ukośnika, a następnie dowolny inny znak, który po nim następuje?”... Oczywiście, że możesz! Istnieje inny znak specjalny używany do dopasowania (prawie) dowolnego znaku — znak kropki. Oto, co robi:
wzór: .
ciąg znaków: Przepraszam, Dave. Obawiam się, że nie mogę tego zrobić.
mecze: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^	
( Przykład ) Jeśli chcesz dopasować tylko wzorce wyglądające jak sekwencje ucieczki, możesz zrobić coś takiego:
wzór: \\. 
ciąg znaków: Cześć, Walmart to mój wnuk, nazywa się „ \n \r \t ”.
mecze:                                              ^^ ^^ ^^	
( Przykład ) I tak jak w przypadku wszystkich znaków specjalnych, jeśli chcesz dopasować literał ., musisz poprzedzić go znakiem \:
wzór: \. 
ciąg: Wojna to pokój . Wolność jest niewolnictwem . Ignorancja jest siłą . 
mecze:             ^ ^ ^
( Przykład )

Krok 5: Zakresy znaków

RegEx: 20 krótkich kroków do opanowania wyrażeń regularnych.  Część 1 - 6A co jeśli nie potrzebujesz żadnych symboli, a jedynie chcesz znaleźć litery w tekście? Albo liczby? Albo samogłoski? Wyszukiwanie według klas postaci i ich zasięgów pozwoli nam to osiągnąć.
` \n `, ` \r ` i ` \t ` to białe znaki, ` \. `, ` \\ ` i ` \[ ` nie są .	
Znaki są „białymi znakami”, jeśli nie tworzą widocznego znaku w tekście. Spacja „ ” to spacja, podział wiersza lub tabulator. Powiedzmy, że chcemy znaleźć sekwencje specjalne, które reprezentują tylko białe znaki i \nw powyższym fragmencie, ale nie inne sekwencje specjalne. Jak moglibyśmy to zrobić? \r\t
wzór: \\[nrt] 
ciąg znaków: ` \n `, ` \r ` i ` \t ` to białe znaki, ` \. `, ` \\ ` i ` \[ ` nie są .
mecze:   ^^ ^^ ^^	
( Przykład ) To działa, ale nie jest to zbyt eleganckie rozwiązanie. Co się stanie, jeśli później będziemy musieli dopasować sekwencję ucieczki dla znaku „formularz” \f? (Ten symbol służy do oznaczania podziałów stron w tekście.)
wzór: \\[nrt] 
ciąg znaków: ` \n `, ` \r `, ` \t ` i ` \f ` to białe znaki, ` \. `, ` \\ ` i ` \[ ` nie są .
mecze:   ^^ ^^ ^^	
( Niedziałające rozwiązanie ) Dzięki takiemu podejściu musimy oddzielnie wyświetlić w nawiasach kwadratowych każdą małą literę, którą chcemy dopasować. Łatwiejszym sposobem na osiągnięcie tego jest użycie zakresów znaków w celu dopasowania dowolnej małej litery:
wzór: \\[az] 
ciąg znaków: ` \n `, ` \r `, ` \t ` i ` \f ` to białe znaki, ` \. `, ` \\ ` i ` \[ ` nie są .
mecze:   ^^ ^^ ^^ ^^	
( I to już działa ). Zakresy znaków działają tak, jak można się spodziewać, biorąc pod uwagę powyższy przykład. Umieść nawiasy kwadratowe wokół pierwszej i ostatniej litery, którą chcesz dopasować, umieszczając pomiędzy nimi łącznik. Na przykład, jeśli chcesz znaleźć tylko „zestawy” ukośników odwrotnych \i jednej litery od ado m, możesz wykonać następujące czynności:
wzór: \\[am] 
ciąg znaków: ` \n `, ` \r `, ` \t ` i ` \f ` to białe znaki, ` \. `, ` \\ ` i ` \[ ` nie są .
mecze:                         ^^	
( Przykład ) Jeśli chcesz dopasować wiele zakresów, po prostu umieść je od końca do końca w nawiasach kwadratowych:
wzór: \\[a-gq-z] 
ciąg znaków: ` \n `, ` \r `, ` \t ` i ` \f ` to białe znaki, ` \. `, ` \\ ` i ` \[ ` nie są .
mecze:         ^^ ^^ ^^	
( Przykład ) Inne popularne zakresy znaków obejmują: A-Zi0-9

Wypróbujmy je w praktyce i rozwiążmy kilka problemów:

Liczby szesnastkowe mogą zawierać zarówno cyfry, 0-9jak i litery A-F. Kody szesnastkowe używane do określania kolorów mogą zawierać maksymalnie trzy znaki. Utwórz wyrażenie regularne, aby znaleźć prawidłowe kody szesnastkowe na poniższej liście:
wzór:
ciąg: 1H8 4E2 8FF 0P1 T8B 776 42B G12
mecze:      ^^^ ^^^ ^^^ ^^^	
( Rozwiązaniey ) Używając zakresów znaków, utwórz wyrażenie regularne, które w poniższym zdaniu wybierze tylko małe spółgłoski (nie samogłoski, w tym ):
wzór:
ciąg : Ściany w nich są całkowicie , całkowicie wysokie . _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
mecze:   ^ ^ ^^^ ^ ^^ ^ ^^ ^ ^ ^ ^^^ ^ ^ ^^^ ^ ^^	
( Rozwiązanie )

Krok 6: „nie”, daszek, daszek, daszek… symbol^

RegEx: 20 krótkich kroków do opanowania wyrażeń regularnych.  Część 1 - 7Tak naprawdę istnieje ponad 9000 nazw tego symbolu :) Ale dla uproszczenia może skupimy się na „nie”. Moje rozwiązanie ostatniego problemu jest trochę długie. Powiedzenie „pobierz cały alfabet z wyjątkiem samogłosek” wymagało 17 znaków. Oczywiście jest na to łatwiejszy sposób. Znak „nie” ^pozwala nam określić znaki i zakresy znaków, które nie mogą odpowiadać tym określonym we wzorcu. Prostszym rozwiązaniem ostatniego problemu powyżej jest znalezienie znaków, które nie reprezentują samogłosek:
wzór : [ ^ aeiou ] string 
:   Ściany w nichcałkowicie , całkowicie wysokie . _ _ _ _ _ _ _ _ _ _ _ _ 
mecze: ^^ ^^ ^^^^ ^^^^ ^^ ^^^ ^ ^^ ^ ^^^^^^ ^ ^^^^^ ^^^ 	
( Przykład ) Znak „nie” ^znajdujący się skrajnie po lewej stronie znaku w nawiasach kwadratowych []informuje silnik wyrażeń regularnych, aby dopasował jeden (dowolny) znak, który nie znajduje się w nawiasach kwadratowych. Oznacza to, że powyższe wyrażenie regularne dopasowuje również wszystkie spacje, kropki ., przecinki ,i wielkie litery Tna początku zdania. Aby je wykluczyć, możemy je również umieścić w nawiasach kwadratowych:
wzór : [ ^ aeiou . , T ] string  
: Ściany w nich całkowicie , całkowicie wysokie . _ _ _ _ _ _ _ _ _ _ _ _ 
mecze:   ^ ^ ^^^ ^ ^^ ^ ^^ ^ ^ ^ ^^^ ^ ^ ^^^ ^ ^^	
( Przykład ) notatkaże w tym przypadku nie musimy przerywać kropki ukośnikiem odwrotnym, jak to zrobiliśmy wcześniej, gdy szukaliśmy jej bez użycia nawiasów kwadratowych. Wiele znaków specjalnych w nawiasach kwadratowych, łącznie z nawiasem otwierającym [, ale nie zamykającym, jest traktowanych dosłownie ](możesz zgadnąć dlaczego?). Znak odwrotnego ukośnika \również nie jest interpretowany dosłownie. Jeśli chcesz dopasować dosłowny ukośnik odwrotny \za pomocą nawiasów kwadratowych, musisz przed nim uciec następującym ukośnikiem odwrotnym \\. To zachowanie zostało zaprojektowane tak, aby białe znaki mogły być również umieszczane w nawiasach kwadratowych w celu dopasowania:
wzór: [\t]
ciąg: ttt
mecze:   ^ ^ ^
( Przykład ) Znaku „nie” ^można także używać z zakresami. Gdybym chciał uchwycić tylko znaki a, b, c, i x, mógłbym zrobić coś takiego: yz
wzór: [abcxyz] 
ciąg:   abc defghijklmnopqrstuvw xyz 
dopasowania: ^^^ ^^^
( Przykład ) ...lub mógłbym określić, że chcę znaleźć dowolny znak, który nie znajduje się pomiędzy di w:
wzór: [^dw] 
ciąg:   abc defghijklmnopqrstuvw xyz 
dopasowania: ^^^ ^^^
( Przykład ) Jednakbądź ostrożnyz „nie” ^. Łatwo jest pomyśleć: „cóż, podałem [^ b-f], więc powinienem otrzymać małą literę alub coś po f. Tak się nie dzieje. To wyrażenie regularne dopasuje dowolny znak spoza tego zakresu, w tym litery, cyfry, znaki interpunkcyjne i spacje.
wzór: [^dw] 
ciąg:   abc defg h . i , j - klmnopqrstuvw xyz 
dopasowania: ^^^ ^ ^ ^ ^ ^^^
( Przykład )

Zadania zwiększające poziom:

Użyj znaku „nie” ^w nawiasach kwadratowych, aby dopasować wszystkie poniższe słowa, które nie kończą się na y:
wzór:
ciąg: pies dzienny wieprz siano torfowisko ray rub 
mecze:      ^^^ ^^^ ^^^ ^^^	
( Rozwiązanie ) Napisz wyrażenie regularne, używając zakresu i znaku „nie” ^, aby znaleźć wszystkie lata pomiędzy 1977 a 1982 (włącznie):
wzór:
ciąg: 1975 1976 1977 1978 1979 1980 1981 1982 1983 1984
mecze:            ^^^^ ^^^^ ^^^^ ^^^^ ^^^^ ^^^^
( Rozwiązanie ) Napisz wyrażenie regularne, aby znaleźć wszystkie znaki, które nie są znakiem „nie” ^:
wzór:
ciąg:   abc1 ^ 23*() 
odpowiada: ^^^^ ^^^^^	
( Rozwiązanie )

Krok 7: Klasy postaci

Klasy znaków są jeszcze prostsze niż zakresy znaków. Różne silniki wyrażeń regularnych mają dostępne różne klasy, więc omówię tutaj tylko najważniejsze. (Sprawdź, której wersji wyrażenia regularnego używasz, ponieważ może być ich więcej lub mogą różnić się od pokazanych tutaj.) Klasy znaków działają prawie jak zakresy, ale nie możesz określić wartości „początek” i „koniec”:
Klasa symbolika
\d "liczby"[0-9]
\w „symbole słowne”[A-Za-z0-9_]
\s „przestrzenie”[ \t\r\n\f]
Klasa znaków „word” \wjest szczególnie użyteczna, ponieważ ten zestaw znaków jest często wymagany w przypadku prawidłowych identyfikatorów (nazw zmiennych, nazw funkcji itp.) w różnych językach programowania. Możemy użyć \wdo uproszczenia wyrażenia regularnego, które widzieliśmy wcześniej:
wzór: \\[az] 
ciąg znaków: ` \n `, ` \r `, ` \t ` i ` \f ` to białe znaki, ` \. `, ` \\ ` i ` \[ ` nie są .
mecze:   ^^ ^^ ^^ ^^	
Używając \wmożemy napisać tak:
wzór: \\\w 
ciąg: ` \n `, ` \r `, ` \t ` i ` \f ` to białe znaki, ` \. `, ` \\ ` i ` \[ ` nie są .
mecze:   ^^ ^^ ^^ ^^	
( Przykład )

2 zadania na szczęście:

Jak wiemy, w Javie identyfikator (nazwa zmiennej, klasy, funkcji itp.) może zaczynać się tylko od litery a- zA- Z, znaku dolara $lub znaku podkreślenia _. ( podkreślenie jest oczywiście w złym stylu, ale kompilator je pomija, przyp. tłumacza ). Pozostałe znaki muszą być znakami „word” \w. Korzystając z jednej lub większej liczby klas znaków, utwórz wyrażenie regularne, aby wyszukać prawidłowe identyfikatory Java wśród następujących sekwencji trzech znaków:
wzór:
ciąg:   __e 12 dolarów .x2 foo Bar 3mm
mecze: ^^^ ^^^ ^^^ ^^^	
( Rozwiązanie ) Amerykańskie numery ubezpieczenia społecznego (SSN) to 9-cyfrowe liczby w formacie XXX-XX-XXXX, gdzie każde X może być dowolną cyfrą [0-9]. Używając jednej lub więcej klas znaków, napisz wyrażenie regularne, aby znaleźć poprawnie sformatowane numery SSN na poniższej liście:
wzór:
ciąg: 113-25=1902 182-82-0192 H23-_3-9982 1I1-O0-E38B
mecze:              ^^^^^^^^^^^
( Rozwiązanie ) RegEx: 20 krótkich kroków do opanowania wyrażeń regularnych. Część 2. 20 krótkich kroków do opanowania wyrażeń regularnych. Część 3. RegEx: 20 krótkich kroków do opanowania wyrażeń regularnych. Część 4.
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION