[請益] 正規表示式的意思

看板PHP作者 (ianyu)時間14年前 (2011/06/04 16:27), 編輯推噓0(004)
留言4則, 2人參與, 最新討論串1/2 (看更多)
這邊有一行正規表示式 "/<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

06/04 19:58, , 1F
?是指非貪婪模式...
06/04 19:58, 1F

06/04 19:58, , 2F
.*?會盡量匹配到越少的字元 .*則是越多越好
06/04 19:58, 2F

06/04 20:01, , 3F
在[]裡的^代表否定 也就是在[]裡的任意字元不得出現
06/04 20:01, 3F

06/06 00:05, , 4F
謝謝指點
06/06 00:05, 4F
文章代碼(AID): #1DwUnpPk (PHP)
文章代碼(AID): #1DwUnpPk (PHP)