作者rainyuhtree (ianyu)
看板PHP
標題[請益] 正規表示式的意思
時間Sat Jun 4 16:27:28 2011
這邊有一行正規表示式
"/<object(.*?)i\=+([^\&]+)(.*?)<\/object>/ms"
我知道他的意思就是在
<object></object>當中找出i=開始到&結尾中間的字串
我把它拆解成
"/<object 表示從<object開頭
(.*?) ()表示一個sub pattern,裡頭*表示前一個的.可以0-無限個,而.表示
任意字元。但是?表示前一個字元可以出現0-1次。.*,這個寫法有了
解,但是加上?的用意是??,有看推文說這樣才可以解決換行的問題
i\=+ 表示i後頭接=,而+是用來表示前面的=可以有1-無限個
([^\&]+) []包含裡頭的的任一字元的內容,疑問是^,如果放在最前當開頭,或
是否定,但應該是當開頭吧???然後再補上+表示至少要有一個&
(.*?) 隨後又可以用任一個字元
<\/object>/ms" 然後結尾的字元
雖然自己解釋了一遍,但還是沒很瞭解,一個是?一個是^
那抓出i=到&這一段,i\=+([^\&]+),是這一段嘛??
希望大家幫忙補充說明一下囉,謝謝啦
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.33.67.53
1F:→ s25g5d4:?是指非貪婪模式... 06/04 19:58
2F:→ s25g5d4:.*?會盡量匹配到越少的字元 .*則是越多越好 06/04 19:58
3F:→ s25g5d4:在[]裡的^代表否定 也就是在[]裡的任意字元不得出現 06/04 20:01
4F:→ rainyuhtree:謝謝指點 06/06 00:05