PHP擴(kuò)展之文本處理(二)——PCRE正則表達(dá)式語(yǔ)法4——Unicode字符屬性
自從 PHP 4.4.0 和 5.1.0, 三個(gè)額外的轉(zhuǎn)義序列在選用?UTF-8模式時(shí)用于匹配通用字符類(lèi)型。他們是:
p{xx}一個(gè)有屬性 xx 的字符P{xx}一個(gè)沒(méi)有屬性 xx 的字符X一個(gè)擴(kuò)展的 Unicode 字符上面?xx?代表的屬性名用于限制 Unicode 通常的類(lèi)別屬性。 每個(gè)字符都有一個(gè)這樣的確定的屬性,通過(guò)兩個(gè)縮寫(xiě)的字母指定。 為了與 perl 兼容, 可以在左花括號(hào) { 后面增加 ^ 表示取反。比如:?p{^Lu}?就等同于?P{Lu}。
如果通過(guò)?p?或?P?僅指定了一個(gè)字母,它包含所有以這個(gè)字母開(kāi)頭的屬性。 在這種情況下,花括號(hào)的轉(zhuǎn)義序列是可選的。
p{L}pL
指定大小寫(xiě)不敏感匹配對(duì)這些轉(zhuǎn)義序列不會(huì)產(chǎn)生影響,比如,?p{Lu}?始終匹配大寫(xiě)字母。
Unicode 字符集在具體文字中定義。使用文字名可以匹配這些字符集中的一個(gè)字符。例如:
p{Greek}P{Han}不在確定文字中的則被集中到?Common。
X?轉(zhuǎn)義匹配任意數(shù)量的 Unicode 字符。?X?等價(jià)于?(?>PMpM*)
也就是說(shuō),它匹配一個(gè)沒(méi)有 ”mark” 屬性的字符,緊接著任意多個(gè)由 ”mark” 屬性的字符。 并將這個(gè)序列認(rèn)為是一個(gè)原子組(詳見(jiàn)下文)。 典型的有 ”mark” 屬性的字符是影響到前面的字符的重音符。
用 Unicode 屬性來(lái)匹配字符并不快, 因?yàn)?PCRE 需要去搜索一個(gè)包含超過(guò) 15000 字符的數(shù)據(jù)結(jié)構(gòu)。 這就是為什么在 PCRE中 要使用傳統(tǒng)的轉(zhuǎn)義序列d、?w?而不使用 Unicode 屬性的原因。
相關(guān)文章:
1. PHP使用Swagger生成好看的API文檔2. ASP.NET MVC使用jQuery ui的progressbar實(shí)現(xiàn)進(jìn)度條3. ASP基礎(chǔ)知識(shí)VBScript基本元素講解4. Python3 json模塊之編碼解碼方法講解5. Python 利用Entrez庫(kù)篩選下載PubMed文獻(xiàn)摘要的示例6. Python 制作查詢(xún)商品歷史價(jià)格的小工具7. 通過(guò)實(shí)例解析Python文件操作實(shí)現(xiàn)步驟8. python使用jenkins發(fā)送企業(yè)微信通知的實(shí)現(xiàn)9. Python 如何調(diào)試程序崩潰錯(cuò)誤10. Python 合并拼接字符串的方法

網(wǎng)公網(wǎng)安備