php正则里面,[^^]是什么意思

原文如下:
$test = '<p>444<img height="768" width="1024" alt="" src="/uploadfiles/28/Tree.jpg" /></p>
<p>444<img height="768" width="1024" alt="" src="/uploadfiles/sf/Tree.jpg" /></p>
fsdafasdfasdfasdf
<p>444<img height="768" width="1024" alt="" src="/uploadfiles/28/elm.jpg" /></p>

<p>444<img height="768" width="1024" alt="" src="/uploadfiles/28/maple.jpg" /></p>

sdf32414撒旦发是否
<p>444<img height="768" width="1024" alt="" src="/uploadfiles/40/Tree.jpg" /></p>';

preg_match_all("/<p>.*src=\"([^^]*?)\".*<\/p>/i",$test,$match);

print_r($match[1]);
匹配图片路径,其中的这个[^^]不知道什么意思?有哪位了解的吗?

[^x] 匹配除了x以外的任意字符
[^^] 匹配除^外的任意字符,第一个^是正则表达式元字符,第二个是普通字符
[^^]*? 不进行贪婪匹配,也就是说src="之后遇到第一个"就结束匹配

测试方法:你可以在任何一个图片链接中添加一个^符号就会发现那个图片链接匹配失败了

[^^]*?的用法在这正则里只增加了语义上的歧义,完全可以写成preg_match_all("/<p>.*src=\"(.*?)\".*<\/p>/i",$test,$match);或其他匹配方法
温馨提示:内容为网友见解,仅供参考
第1个回答  2015-05-15
第一个非,第二个\n\r追问

第2个为什么是回车换行的意思?求解

追答

就是这样规定的,看^在什么位置,在表达式的前端代表起始,在项的前端代表非,在项的后面匹配 '\n' 或 '\r' 之后的位置。 与它类似比如$,也有类似情况,在项的后面匹配 '\n' 或 '\r' 之前的位置。

第2个回答  2015-05-18
[^\^] 这样可能好懂点 匹配一个不是^的字符
相似回答