首頁  >  文章  >  後端開發  >  php—PCRE正規表示式Unicode字元屬性

php—PCRE正規表示式Unicode字元屬性

伊谢尔伦
伊谢尔伦原創
2016-11-21 17:25:251317瀏覽

自從 PHP 4.4.0 和 5.1.0, 三個額外的轉義序列在選用 UTF-8模式時用於匹配通用字元類型。他們是:

p{xx}

一個有屬性xx 的字元

P{xx}

一個沒有屬性xx 的字元

X

🠎一個擴充的於限制Unicode 通常的類別屬性。 每個字元都有一個這樣的確定的屬性,透過兩個縮寫的字母指定。 為了與 perl 相容, 可以在左花括號 { 後面增加 ^ 表示取反。例如: p{^Lu} 就等同於 P{Lu}。

如果透過 p 或 P 只指定了一個字母,它包含所有以這個字母開頭的屬性。 在這種情況下,花括號的轉義序列是可選的。

p{L}

pL


指定大小寫不敏感配對這些轉義序列不會產生影響,例如, p{Lu} 總是符合大寫字母。

Unicode 字元集在具體文字中定義。使用文字名稱可以匹配這些字元集中的一個字元。例如:

p{Greek}

P{Han}

不在確定文字中的則被集中到 Common。

X 轉義符合任意數量的 Unicode 字元。 X 等價於 (?>PMpM*)

也就是說,它匹配一個沒有 ”mark” 屬性的字符,緊接著任意多個由 ”mark” 屬性的字符。 並將這個序列認為是一個原子組(詳見下文)。 典型的有 ”mark” 屬性的字元是影響到前面的字元的重音符。

用 Unicode 屬性來匹配字元並不快, 因為 PCRE 需要去搜尋一個包含超過 15000 個字元的資料結構。 這就是為什麼在 PCRE中 要使用傳統的轉義序列d、 w 而不使用 Unicode 屬性的原因。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn