您的位置:首页 > 编程语言 > PHP开发

正则表达式的问题(php环境中使用)

2011-08-04 10:24 411 查看
?当该字符紧跟在任何一个其他限制符 (*, +, ?, {n}, {n,}, {n,m}) 后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。例如,对于字符串 "oooo",'o+?' 将匹配单个 "o",而 'o+' 将匹配所有 'o'。
(pattern)匹配 pattern 并获取这一匹配。所获取的匹配可以从产生的 Matches 集合得到,在VBScript 中使用 SubMatches 集合,在JScript 中则使用 $0…$9 属性。要匹配圆括号字符,请使用 '\(' 或 '\)'。
[xyz]字符集合。匹配所包含的任意一个字符。例如, '[abc]' 可以匹配 "plain" 中的 'a'。
[^xyz]负值字符集合。匹配未包含的任意字符。例如, '[^abc]' 可以匹配 "plain" 中的'p'。
.匹配除 "\n" 之外的任何单个字符。要匹配包括 '\n' 在内的任何字符,请使用象 '[.\n]' 的模式。
$str="测试字符串 aaa aaa@test1.com BBB sare bbb@test2.cn asda";
preg_match_all('/[\w.%-]+@[\w.-]+\.[a-z]{2,4}/i', $str, $matches);
print_r($matches);

处理对象

<?xml version="1.0" encoding="utf-8" ?> - <rss version="2.0" xmlns:media="http://search.yahoo.com/mrss" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"> - <channel> - <title> - <![CDATA[
michael-视频搜索-优酷网
]]> </title> + <description> - <![CDATA[
michael-视频搜索-优酷网
]]> </description> <link>http://www.youku.com</link> <lastBuildDate>Thu, 04 Aug 2011 08:35:11 +0800</lastBuildDate> - <image> <url>http://www.youku.com/index/img/youkulogo.gif</url> <title>优酷网-中国第一视频网,提供视频播放,视频发布,视频搜索</title> <link>http://www.youku.com</link> <description>视频服务平台,提供视频播放,视频发布,视频搜索、视频分享</description> </image> - <item> - <title> - <![CDATA[
迈克尔杰克逊(Michael Jackson)梦幻舞步MJ最强之舞精华
]]> </title> <link>http://v.youku.com/v_show/id_XMjI5NDYyODY4.html</link> + <description> - <![CDATA[
<a href="http://v.youku.com/v_show/id_XMjI5NDYyODY4.html"><img src="http://g1.ykimg.com/0100641F464D05BF5E15C104C1517F5E85BF8E-FE90-CB06-DA2D-F2A3634EDAE1" border="0" width="120" height="90" vspace="4" hspace="4" title="迈克尔杰克逊(Michael Jackson)梦幻舞步MJ最强之舞精华" target="_blank" /></a> 		                    	<p>Michael Jackson迈克尔杰克逊MJ梦幻舞步~机械</p>
]]> </description> <itunes:duration>5:59</itunes:duration> - <itunes:keywords> - <![CDATA[
迈克杰克逊,迈克尔杰克逊,最强之舞,机械舞,太空步,mj,模仿MJ,模仿杰克逊,模仿迈克
]]> </itunes:keywords> - <author> - <![CDATA[
恋金爱怡
]]> </author> <size>0</size> - <publicType> - <![CDATA[
0
]]> </publicType> <comments>http://v.youku.com/v_show/id_XMjI5NDYyODY4.html#replyLocation</comments> <pubDate>Mon, 13 Dec 2010 14:39:53 +0800</pubDate> <guid>http://v.youku.com/v_show/id_XMjI5NDYyODY4.html</guid> <enclosure type="application/x-shockwave-flash" url="http://player.youku.com/player.php/sid/XMjI5NDYyODY4/v.swf" /> </item> - <item> - <title> - <![CDATA[
《20世纪福克斯:极限乔丹》Michael Jordan to the Max 中文字幕
]]> </title> <link>http://v.youku.com/v_show/id_XMjUzOTg3MDI4.html</link> - <description> - <![CDATA[
<a href="http://v.youku.com/v_show/id_XMjUzOTg3MDI4.html"><img src="http://g2.ykimg.com/0100641F464D8EA42E0C94023D5B7A886F035C-7E1A-420F-B7C7-1F0522D061BC" border="0" width="120" height="90" vspace="4" hspace="4" title="《20世纪福克斯:极限乔丹》Michael Jordan to the Max 中文字幕" target="_blank" /></a> 		                    	<p></p>
]]> </description> <itunes:duration>46:25</itunes:duration> - <itunes:keywords> - <![CDATA[
极限乔丹,JORDAN,michael,乔丹
]]> </itunes:keywords> - <author> - <![CDATA[
木瓜奶好饮
]]> </author> <size>0</size> - <publicType> - <![CDATA[
0
]]> </publicType> <comments>http://v.youku.com/v_show/id_XMjUzOTg3MDI4.html#replyLocation</comments> <pubDate>Sun, 27 Mar 2011 10:49:41 +0800</pubDate> <guid>http://v.youku.com/v_show/id_XMjUzOTg3MDI4.html</guid> <enclosure type="application/x-shockwave-flash" url="http://player.youku.com/player.php/sid/XMjUzOTg3MDI4/v.swf" />

</item>

对description中的href链接和image的链接提取的过程中,使用如下方法获得成功。

$str="<a href=\"http://v.youku.com/v_show/id_XMjUzOTg3MDI4.html\"><img src=\"http://g1.ykimg.com/0100641F464D05BF5E15C104C1517F5E85BF8E-FE90-CB06-DA2D-F2A3634EDAE1\" border=\"0\" target=\"_blank\" /></a><p>Michael Jackson迈克尔杰克逊MJ梦幻舞步~机械</p>"; preg_match('/<a href="(.+?)">/',$str,$match); //print_r($match); echo 'The link is '.$match[1]; echo "<br>"; preg_match('/src="(.+?)"/',$str,$match2);

echo 'The image is '.$match2[1];

注释:.匹配任意除('\n')字符,?代表非贪婪匹配(默认情况下的匹配为贪婪匹配),在此的"不需要用\作转义,而在字符串中需要\。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: