-
獨立表示式 (?>模式)無論以下匹配是否成功,獨立表示式都不會在內部回退。
r) 引用整個表示式。
分析((r))*下的匹配過程,由於遞迴的存在,初始正規表示式稱為正則公式一,第乙個遞迴稱為正則公式二。
首先,字串前面的 c11: 匹配失敗,然後 (匹配到 (, (匹配到 c111:下乙個 (匹配失敗,執行多選分支後的專案(?.)
r) 並且不會回退,因此從 c111:of: 之後的位置呼叫正規表示式 2。
在常規公式 2 (match to (, (match to c1111:a1111, ) match to) 中,常規公式 2 匹配結束,繼續回到常規公式 1,公式執行為 * 前面括號的內容重複(?匹配到; c112;a112, ) 匹配),並且匹配整個正規表示式。
在這種情況下,只使用乙個遞迴,然後它等價於。
-
r 表示對整個表示式的遞迴引用。
在這個表示式中。
別理他。
) 表示匹配的括號。
最重要的 ((?.)r))
[裡面? > 是乙個獨立的表示式,表示自動分組,[ 這個很簡單,它意味著匹配除括號之外的所有字元。
r 表示整個表示式是遞迴的,不知道大家是否理解遞迴,就是指代表示式本身,所以表示式可以看作是((?.)r)) 相當於再匹配一次自己,這樣括號中的括號就可以匹配,同樣,如果字元傳遞中有 3 級括號,他也會匹配。
列印 R。
print_r(str_replace('0x3b', ';', explode(';', preg_replace_callback($regex, 'callback1', $s)))
執行 preg replace 回撥 ($regex,'callback1',$s)他會打電話。
function callback1($s) {
print_r($s[0]);
return str_replace(';', '0x3b', $s[0]);
整個功能。 然後執行 explode() 拆分生成的字串並將其儲存在陣列中。
然後執行 str replace() 來替換字串。
最終輸出。
-
這意味著一對括號內有乙個字串,而該字串不能包含(或),或者,在一對括號內,裡面只有乙個? r
你這個? r有什麼用法,我從來沒見過。
>>'(?ab).*d)',s)非貪婪模式,先在左邊找到ab,然後開始0個字元,檢查右邊是否有d,如果不滿足就反向獲取乙個字元,直到右邊的字元d滿足為止; >>>More
e 's/:\+s\+/:/' -e 's/ /_/g'
第一次放置每一行"n 連續 : 和 m 後面的空格"替換為 :將此行中剩餘的相似匹配項替換為 其中 n >= 1, m>=1 >>>More