请问下面有关网址的正则表达式中,([^\.\/]+)和(\/[\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 "搜索失败!"; //如果和正则表达式没有匹配成功则输出此条语句
}
?>
<?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 "搜索失败!"; //如果和正则表达式没有匹配成功则输出此条语句
}
?>
(\/[\w-\.\/\?\%\&\=]*)?匹配如果满足必须有/后面可以跟上所有的字母、-、?、%、&、=
(\/[\w-\.\/\?\%\&\=]*)? 匹配0个或者一个"/adfad./?%&="这样的字符串
(\/[\w-\.\/\?\%\&\=]*)?//括号里是:字符/后面跟上任意个\w(数字字母下划线),.,-,/,?,%,&,=
后面的问号则表示括号里所表示的东西有或没有