作者knuckles (那克斯)
看板PHP
标题Re: [请益] 正规表示式的意思
时间Sat Jun 4 16:49:32 2011
※ 引述《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="
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)
1F:推 rainyuhtree:谢谢指点 06/06 00:05
2F:推 ThiefFan:有收获推 01/31 11:39