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. 如何在jsp界面中插入圖片2. .NET6打包部署到Windows Service的全過程3. jsp EL表達(dá)式詳解4. 淺談SpringMVC jsp前臺獲取參數(shù)的方式 EL表達(dá)式5. Jsp中request的3個基礎(chǔ)實(shí)踐6. .NET使用YARP通過編碼方式配置域名轉(zhuǎn)發(fā)實(shí)現(xiàn)反向代理7. ASP 連接Access數(shù)據(jù)庫的登陸系統(tǒng)8. CSS3實(shí)例分享之多重背景的實(shí)現(xiàn)(Multiple backgrounds)9. 解析原生JS getComputedStyle10. SpringMVC+Jquery實(shí)現(xiàn)Ajax功能
