色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁技術文章
文章詳情頁

PHP擴展之文本處理(二)——PCRE正則表達式語法14——注釋及遞歸模式

瀏覽:3日期:2022-09-16 08:44:30
注釋

字符序列(?#標記開始一個注釋直到遇到一個右括號。不允許嵌套括號。 注釋中的字符不會作為模式的一部分參與匹配。

如果設置了?PCRE_EXTENDED?選項, 一個字符類外部的未轉義的 # 字符就代表本行剩余部分為注釋。

遞歸模式

考慮匹配圓括號內字符串的問題,允許無限嵌套括號。如果不使用遞歸, 最好的方式是使用一個模式匹配固定深度的嵌套。它不能處理任意深度的嵌套。 perl 5.6 提供了一個實驗性的功能允許正則表達式遞歸。 特殊項 (?R) 提供了遞歸的這種特殊用法。 這個PCRE模式解決了圓括號問題(假設?PCRE_EXTENDED?選項被設置了, 因此空白字符被忽略):?( ( (?>[^()]+) | (?R) )* )。

首先,它匹配一個左括號。 然后它匹配任意數量的非括號字符序列或一個模式自身的遞歸匹配(比如, 一個正確的括號子串),最終,匹配一個右括號。

這個例子模式包含無限重復的嵌套,因此使用了一次性子組匹配非括號字符, 這在模式應用到模式不匹配的字符串時非常重要。比如, 當它應用到?(aaaaaaaaaaaaaaaaaaaaaaaaaaaaa()?時就會很快的產生”不匹配”結果。 然而,如果不使用一次性子組,這個匹配將會運行很長時間, 因為有很多途徑讓 + 和 * 重復限定分隔目標字符串, 并且在報告失敗之前需要測試所有路徑。

所有捕獲子組最終被設置的捕獲值都是從遞歸最外層子模式捕獲的值。 如果上面的模式匹配?(ab(cd)ef),捕獲子組最終被設置的值為 ”ef”, 即頂級得到的最后一個值。如果增加了額外的括號,( ( ( (?>[^()]+) | (?R) )* ) ),捕獲到的字符串就是頂層括號的匹配內容 ”ab(cd)ef”。 如果在模式中有超過 15 個捕獲括號, PCRE 在遞歸期間就會使用 pcre_malloc 分配額外的內存來存儲數據, 隨后通過 pcre_free 釋放他們。如果沒有內存可被分配,它就僅保存前 15 個捕獲括號, 在遞歸內部無法給出內存不夠用的錯誤。

從 PHP 4.3.3 開始,?(?1)、(?2)?等可以用于遞歸子組。這同樣可以用于命名子組:?(?P>name)?或?(?P&name)。

如果遞歸子組語法在它提到的子組括號外部使用(無論是子組數字序號還是子組名稱), 這個操作就相當于程序設計語言中的子程序。 前面一些有一個例子指出模式?(sens|respons)e and 1ibility?匹配 ”sense and responsibility” 和 ”response and responsibility”,但是不匹配 ”sense and responsibility”。如果用模式(sens|respons)e and (?1)ibility?替代, 它會像匹配那兩個字符串一樣匹配 ”sense and responsibility”。 這種引用方式意義是緊接著匹配引用的子模式。(譯注: 后向引用只匹配引用的子組之前匹配的結果, 這里的遞歸語法引用是拿引用的子模式重新匹配。)

目標字符串的最大長度是 int 型變量可以存儲的最大正整數。然而, PCRE 使用遞歸處理子組和無限重復。 這就是說對于某些模式可用的棧空間可能會受目標字符串限制。

標簽: PHP
相關文章:
主站蜘蛛池模板: 亚洲精品亚洲人成在线麻豆 | 亚洲成人免费视频 | 亚洲视频三区 | 国产一级视频在线观看 | 亚洲欧美成人影院 | 夜夜骚视频 | 国产99视频精品免视看9 | 视频一区在线免费观看 | 亚洲成人在线视频播放 | 国产精品不卡在线 | 美女视频黄在线观看 | 国产大乳喷奶水在线看 | 一道精品视频一区二区三区图片 | 成人在线免费播放 | 久久久这里只有精品免费 | 久久精品久久精品久久 | www黄网站| 亚洲黄色片网站 | 一区二区不卡久久精品 | 国产精品亚洲二区 | 日韩在线观看一区二区三区 | 国产精品久久久久a影院 | 国内精品91久久久久 | 手机看片精品国产福利盒子 | 免费观看久久 | 国产99久久亚洲综合精品 | 男人亚洲天堂 | 亚洲欧美在线观看播放 | 精品91| 一级女毛片| 日本三级2021最新理论在线观看 | 国产在线视频h | 韩国毛片 免费 | 又刺激又黄的一级毛片 | 亚洲精品一区二区三区www | 国产成人小视频在线观看 | 亚洲成a人片在线播放 | 深夜福利视频在线看免费 | 成人午夜性a一级毛片美女 成人午夜亚洲影视在线观看 | 精品国产免费人成高清 | 久夜色精品国产一区二区三区 |