A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘明杰 中级黑马   /  2013-2-4 21:15  /  1273 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

问题:192.168.10.5[port=21,type=ftp]”,这个字符串表示IP地址为192.168.10.5的服务器的21端口提供的是ftp服务,其中如果“,type=ftp”部分被省略,则默认为http服务。请用程序解析此字符串,然后打印出“IP地址为***的服务器的***端口提供的服务为***”

  string str = "192.168.10.5[port=21]";
            string regex = @"^(\d{1,3}(\.\d{1,3}){3})\[port=(\d{2,6})(,type=([a-zA-Z]+)?\]$)";
            Match mc = Regex.Match(str, regex);
            if (mc.Success)
            {
                Console.WriteLine(mc.Groups[1].Value);
                Console.WriteLine(mc.Groups[3].Value);
                Console.WriteLine(string.IsNullOrEmpty(mc.Groups[5].Value) ? "http" : mc.Groups[5].Value);
            }
            Console.ReadKey();

//为什么 我这样写,输出为空 ,是那里写错了

1 个回复

倒序浏览
本帖最后由 王立 于 2013-2-5 20:40 编辑

string str = "192.168.10.5[port=21]";
                          //主要 ((,type=([a-zA-Z]+))?   这里问题,需要加一对括号
            //             @"^(\d{1,3}(\.\d{1,3}){3})\[port=(\d{2,6})(,type=([a-zA-Z]+)?\]$)";  
            string regex = @"^(\d{1,3}(\.\d{1,3}){3})\[port=(\d{2,6})((,type=([a-zA-Z]+))?\])$";
            Match mc = Regex.Match(str, regex);
            if (mc.Success)
            {
             string a=  mc.Groups[1].Value;
              string b=  mc.Groups[3].Value;
             string c=string.IsNullOrEmpty(mc.Groups[5].Value) ? "http" : mc.Groups[5].Value;
            }
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马