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.
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
\w dopasowuje [A-Za-z0-9_] -- tylko ASCII, nie dopasuje "caffe'"
\p{L}\p{N}_ z flagą u -- obejmuje litery z znakami diakrytycznymiDla 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
Znajdź każde słowo, w tym te ze znakami diakrytycznymi (citta', perche', e' …). Użyj property escape \p{L} z flagą u.
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
Znajdź każdy symbol Unicode (waluty, symbole matematyczne, emotikony) w tekście, wykluczając litery i cyfry.
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
Znajdź wszystkie słowa składające się z liter cyrylicy przy użyciu `p{Script=Cyrillic}`.
Pokaż wskazówkę
Użyj \p{Script=Cyrillic} z kwantyfikatorem + i flagą u.
Rozwiązanie dostępne po 3 próbach