我有一个URL库的表,先且定义表结构(表A)如下:
URL分类                                            URL地址
--------------------------              --------------------------      
科学: 数学: 杂志                            http://zxsxjx.periodicals.net.cn/default.html
参考: 教育: 大专院校与研究所: 甘肃          http://zxxy.nwnu.edu.cn/
地区: 亚洲: 中国: 贵州: 遵义          http://zy.gz163.cn/
健康: 医学: 医学信息                    http://zyw.njmu.edu.cn/Index.html
地区: 亚洲: 中国: 广东: 茂名: 健康          http://zyy.maoming.gov.cn/
商业: 原材料: 纸浆与纸                    http://zzpaper.com/
计算机: 互联网络: 搜寻: 搜索引擎: Google https://adwords.google.com/support/
休闲: 聊天与论坛                              https://bbs.et8.net/bbs/
商业: 电子商务: 支付系统                     https://cmpay.10086.cn/
休闲: 聊天与论坛                               https://dream4ever.org/
商业: 电子商务: 支付系统                      https://www.alipay.com/用户访问的地址:
http://api.weibo.cn/interface/f/ttt/v3/getuserinfo.php?nobadge=1&uid=3187720094&s=e1f0e712&gsid=4uzjd7563nfx6abozfn8vdify1x&c=android&wm=2447_0001
如何用很好的正则表达式匹配URL库呢?原则如下:
(1)、用户访问的URL地址,如果能在URL库直接匹配,那么输出分类,结束;
(2)、如果(1)不能匹配到,截取用户URL地址到“/”分类,如例子截取后“http://api.weibo.cn/interface/f/ttt/v3/getuserinfo.php”是否能匹配到,匹配到直接输出分类,结束;
(3)、(2)的方法依次类推匹配(截取回退一个"/",如:http://api.weibo.cn/interface/f/ttt/v3),直到网站域名“http://api.weibo.cn/”是否能匹配到,匹配到直接输出分类,结束;
(4)、如果(3)不能匹配到,截取用户访问地址到域名"http://api.weibo.cn/",是否能匹配到,匹配到直接输出分类,结束;
(5)、如果(4)不能匹配,匹配2级域名“http://xxx.weibo.cn/”,如果能匹配到,匹配到直接输出分类,结束;--多少域名,根据用户URL地址来判断;如果用户访问URL地址有5级,需要逐步循环处理,知道匹配到一级域名,如用户访问http://loc.map.baidu.com/sdk.php;
(6)、如果(5)也匹配不到,直接输出“其它”,结束;正则