作者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