Przejdź do głównej treści
eLearner.app
Moduł 5 · Lekcja 4 z 420/32 w kursie~12 min
Lekcje modułu (4/4)

Unicode Property Escapes

Klasy \w, \d, \s w standardzie ASCII nie wystarczają do obsługi tekstów w języku polskim, francuskim, greckim czy emotikonów. Współczesny JavaScript (z flagą u -- Unicode) oferuje właściwości znaków (property escapes) multi_replace_file_content\p{...}: klasy semantyczne oparte na właściwościach znaków w standardzie Unicode.

Code
Pattern: \p{L}+        (z flagą u)
Sample:  Ciao caffe' über世界
         ^^^^ ^^^^^^^ ^^^^ ^^^^

\p{L} = "dowolna litera (Unicode)": obejmuje litery z akcentami (w tym polskie znaki diakrytyczne), ideogramy chińskie, cyrylicę, alfabet grecki... wszystko. Najbardziej typowe właściwości:

  • \p{L} -- litera (dowolnego alfabetu).
  • \p{N} -- liczba (cyfry arabskie, rzymskie, indyjskie...).
  • \p{P} -- interpunkcja.
  • \p{S} -- symbol (matematyczny, waluta, emotikony...).
  • \p{Z} -- spacja/separator.
  • \p{Script=Latin} -- konkretnie alfabet łaciński.
  • \p{Script=Greek} -- alfabet grecki. I tak dalej.

Oraz wersje zanegowane \P{L}, \P{N}, ...

Różnica w stosunku do \w i \d

Code
\w dopasowuje [A-Za-z0-9_]              -- tylko ASCII, nie dopasuje "caffe'"
\p{L}\p{N}_  z flagą u                  -- obejmuje litery z znakami diakrytycznymi

Dla niezawodnego parsera języka polskiego wybieraj \p{L} zamiast \w: książka, stół, łąka zostaną poprawnie dopasowane jako słowa.

Właściwości Unicode i kompatybilność przeglądarek

Właściwości Unicode, takie jak \\p{L} (litery) lub \\p{Script=Latin}, rozszerzają klasy na alfabet międzynarodowy. W JavaScript wymagają one bezwzględnie flagi u (lub v), w przeciwnym razie silnik zgłosi błąd składniowy.

Spróbuj sam

Ćwiczenie#regex.m5.l4.e1
Próby: 0Ładowanie...

Znajdź każde słowo, w tym te ze znakami diakrytycznymi (citta', perche', e' …). Użyj property escape \p{L} z flagą u.

Ładowanie edytora...
Pokaż wskazówkę

Zastąp \w+ wyrażeniem \p{L}+ i dodaj flagę u (oprócz g).

Rozwiązanie dostępne po 3 próbach

Ćwiczenie powtórzeniowe

Ćwiczenie#regex.m5.l4.e2
Próby: 0Ładowanie...

Znajdź każdy symbol Unicode (waluty, symbole matematyczne, emotikony) w tekście, wykluczając litery i cyfry.

Ładowanie edytora...
Pokaż wskazówkę

\p{S} dopasowuje kategorię Symbol w Unicode. Pamiętaj o fladze u.

Rozwiązanie dostępne po 3 próbach

Dodatkowe wyzwanie

Ćwiczenie#regex.m5.l4.e3
Próby: 0Ładowanie...

Znajdź wszystkie słowa składające się z liter cyrylicy przy użyciu `p{Script=Cyrillic}`.

Ładowanie edytora...
Pokaż wskazówkę

Użyj \p{Script=Cyrillic} z kwantyfikatorem + i flagą u.

Rozwiązanie dostępne po 3 próbach