黑马程序员技术交流社区

标题: 正则表达式问题 [打印本页]

作者: 刘明杰    时间: 2013-2-4 21:15
标题: 正则表达式问题
问题: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();

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

作者: 王立    时间: 2013-2-5 20:35
本帖最后由 王立 于 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;
            }





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2