PHP擴(kuò)展之文本處理(二)——PCRE正則表達(dá)式語法4——Unicode字符屬性
自從 PHP 4.4.0 和 5.1.0, 三個額外的轉(zhuǎn)義序列在選用?UTF-8模式時用于匹配通用字符類型。他們是:
p{xx}一個有屬性 xx 的字符P{xx}一個沒有屬性 xx 的字符X一個擴(kuò)展的 Unicode 字符上面?xx?代表的屬性名用于限制 Unicode 通常的類別屬性。 每個字符都有一個這樣的確定的屬性,通過兩個縮寫的字母指定。 為了與 perl 兼容, 可以在左花括號 { 后面增加 ^ 表示取反。比如:?p{^Lu}?就等同于?P{Lu}。
如果通過?p?或?P?僅指定了一個字母,它包含所有以這個字母開頭的屬性。 在這種情況下,花括號的轉(zhuǎn)義序列是可選的。
p{L}pL
指定大小寫不敏感匹配對這些轉(zhuǎn)義序列不會產(chǎn)生影響,比如,?p{Lu}?始終匹配大寫字母。
Unicode 字符集在具體文字中定義。使用文字名可以匹配這些字符集中的一個字符。例如:
p{Greek}P{Han}不在確定文字中的則被集中到?Common。
X?轉(zhuǎn)義匹配任意數(shù)量的 Unicode 字符。?X?等價于?(?>PMpM*)
也就是說,它匹配一個沒有 ”mark” 屬性的字符,緊接著任意多個由 ”mark” 屬性的字符。 并將這個序列認(rèn)為是一個原子組(詳見下文)。 典型的有 ”mark” 屬性的字符是影響到前面的字符的重音符。
用 Unicode 屬性來匹配字符并不快, 因?yàn)?PCRE 需要去搜索一個包含超過 15000 字符的數(shù)據(jù)結(jié)構(gòu)。 這就是為什么在 PCRE中 要使用傳統(tǒng)的轉(zhuǎn)義序列d、?w?而不使用 Unicode 屬性的原因。
相關(guān)文章:
1. CSS3實(shí)例分享之多重背景的實(shí)現(xiàn)(Multiple backgrounds)2. XHTML 1.0:標(biāo)記新的開端3. HTML5 Canvas繪制圖形從入門到精通4. XML解析錯誤:未組織好 的解決辦法5. ASP基礎(chǔ)知識VBScript基本元素講解6. asp(vbscript)中自定義函數(shù)的默認(rèn)參數(shù)實(shí)現(xiàn)代碼7. 詳解CSS偽元素的妙用單標(biāo)簽之美8. 利用CSS3新特性創(chuàng)建透明邊框三角9. 使用Spry輕松將XML數(shù)據(jù)顯示到HTML頁的方法10. XML入門的常見問題(四)
