有关网址的正则表达式看不懂?

pak001 2010-08-04 11:14:38
请问下面有关网址的正则表达式中,([^\.\/]+)和(\/[\w-\.\/\?\%\&\=]*)?这个两个子模式是什么意思呢?有点看不太懂,谢谢!


<?php
$pattern='/(https?|ftps?):\/\/(www)\.([^\.\/]+)\.(com|net|org)(\/[\w-\.\/\?\%\&\=]*)?/i'; //正则表达式
$subject="网址为http://www.lampbrother.net/index.php"; //被搜索字符串

if(preg_match($pattern, $subject, $matches)) { //使用preg_match()函数进行匹配
echo "搜索到的URL为:".$matches[0]."<br>"; //数组中第一个元素保存全部匹配结果
echo "URL中的协议为:".$matches[1]."<br>"; //数组中第二个元素保存第一个子表达式
echo "URL中的主机为:".$matches[2]."<br>"; //数组中第三个元素保存第二个子表达式
echo "URL中的域名为:".$matches[3]."<br>"; //数组中第四个元素保存第三个子表达式
echo "URL中的顶域为:".$matches[4]."<br>"; //数组中第五个元素保存第四个子表达式
echo "URL中的文件为:".$matches[5]."<br>"; //数组中第六个元素保存第五 个子表达式
} else {
echo "搜索失败!"; //如果和正则表达式没有匹配成功则输出此条语句
}
?>

...全文
24 点赞 收藏 2
写回复
2 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
Dleno 2010-08-04
([^\.\/]+)//一个或多个不是.和/的字符。
(\/[\w-\.\/\?\%\&\=]*)?//括号里是:任意个\w(数字字母下划线).-/?%&=
后面的问号则表示括号里所表示的东西有或没有
回复
CunningBoy 2010-08-04
([^\.\/]+) 匹配一个或多个非.和/符号
(\/[\w-\.\/\?\%\&\=]*)? 匹配0个或者一个"/adfad./?%&="这样的字符串
回复
发动态
发帖子
基础编程
创建于2007-09-28

2.1w+

社区成员

从PHP安装配置,PHP入门,PHP基础到PHP应用
申请成为版主
社区公告
暂无公告