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

看板PHP作者 (那克斯)時間14年前 (2011/06/04 16:49), 編輯推噓2(200)
留言2則, 2人參與, 最新討論串2/2 (看更多)
※ 引述《rainyuhtree (ianyu)》之銘言: : 這邊有一行正規表示式 : "/<object(.*?)i\=+([^\&]+)(.*?)<\/object>/ms" : 我知道他的意思就是在 : <object></object>當中找出i=開始到&結尾中間的字串 : 我把它拆解成 : "/<object 表示從<object開頭 : (.*?) ()表示一個sub pattern,裡頭*表示前一個的.可以0-無限個,而.表示 : 任意字元。但是?表示前一個字元可以出現0-1次。.*,這個寫法有了 : 解,但是加上?的用意是??,有看推文說這樣才可以解決換行的問題 有加問號的話,(.*?)會抓取符合的字串中,字元數最少的 例如 <object 123456789xxx i=a i=b i=c></object> ^^^^^^^^^^^^^^(.*?)會抓到的 ^^^^^^^^^^^^^^^^^^^^^^(.*)會抓到的 : i\=+ 表示i後頭接=,而+是用來表示前面的=可以有1-無限個 : ([^\&]+) []包含裡頭的的任一字元的內容,疑問是^,如果放在最前當開頭,或 : 是否定,但應該是當開頭吧???然後再補上+表示至少要有一個& ^加在[]裡是用來表示"不可以"是哪些字元 [^\&]+ 代表一個以上"不是&"的字元 : (.*?) 隨後又可以用任一個字元 : <\/object>/ms" 然後結尾的字元 : 雖然自己解釋了一遍,但還是沒很瞭解,一個是?一個是^ : 那抓出i=到&這一段,i\=+([^\&]+),是這一段嘛?? : 希望大家幫忙補充說明一下囉,謝謝啦 總之大概就是像這樣: <object a="1" b="2" i="xxx" rel="nofollow">http://xxx.yy/zzz.htm?c=3&d=ooxx&j=xx">xxx</object> ^^^^^^^^^^^^^^^^^^^^^^^^^^ 想要抓這一段文字 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.248.0.19 ※ 編輯: knuckles 來自: 111.248.0.19 (06/04 16:51)

06/06 00:05, , 1F
謝謝指點
06/06 00:05, 1F

01/31 11:39, , 2F
有收穫推
01/31 11:39, 2F
文章代碼(AID): #1DwV6Vpq (PHP)
文章代碼(AID): #1DwV6Vpq (PHP)