string src = "*>2172.16.12.0/24     10.16.12.1  " //匹配
string src = "*>9172.165.125.0/24     10.16.12.1  " //不要匹配匹配src中的ip地址包含16或12并且是/结束的形式

解决方案 »

  1.   

    string pattern=@"(?<=^|\D)1[26](?=/|\.\S*?/)";
      

  2.   


    string src = "*>2172.16.12.0/24     10.16.12.1  " //匹配
    string src = "*>9172.165.125.0/24     10.16.12.1  " //不要匹配匹配src中的ip地址包含16或12或34 等等,要以后可扩展的
    并且是/结束的形式
    和位置没关系的 
      

  3.   


    string src = "*> 172.16.12.0/24     10.16.12.1  " //也要匹配
    string src = "*>r172.16.12.0/24     10.16.12.1  " //也要匹配开头是不一定的,结尾一定要是/ 并且整个要是一个ip的
      

  4.   

    (?:\*>|\.)1[26]\.(\d*\.)*\d/\d*\s*(\d+\.){3}\d+
      

  5.   

    你这是想匹配啥啊?没看懂...意思是string src = "*>9172.165.125.0/24     10.16.12.1  " //不要匹配165.125.0这3个数只能为16或12或34?你说以/结束..那165.125.0/算不算呢?
      

  6.   

    165.125.0/
    不算的
    首先要是一个ip地址,这个ip地址前面可能不算空格r12.25.36.21/这种形式
    后面一定要是/结束
    并且这个ip地址里面某一个数字是16 或 21 或 34
      

  7.   

    165.125.0/
    不算的
    首先要是一个ip地址,这个ip地址前面可能不是空格r12.25.36.21/这种形式
    后面一定要是/结束
    并且这个ip地址里面某一个数字是16 或 21 或 34
      

  8.   

            protected void Page_Load(object sender, EventArgs e)
            {
                string strfortest = @"*>r172.12.12.12/24     10.16.12.1 
    *> 172.16.12.0/2    10.16.12.1 
    *> 172.16.12.0/    10.16.12.1 
    *> 172.16.12.0/    10.16.12.1 
    *> 172.1.1.666/2    10.16.12.1 
    *> 172.1.1.77/2    10.16.12.1 
    *> 172.16.12.8/2    10.16.12.1 
    *> 172.16.12.90/2    10.16.12.1 ";
                string[] strforcheck = { "16", "12", "34" };
                MatchCollection mc = Regex.Matches(strfortest, @"\*\>[\w\W]+?\.(\d+)\.(\d+)\.(\d+)/\d+[^*]+");
                List<string> list = new List<string>();
                foreach (Match match in mc)
                {
                    for (int i = 1; i <= match.Groups.Count; i++)
                    {
                        Boolean boolean = false;
                        for (int j = 0; j < strforcheck.Length; j++)
                        {
                            if (match.Groups[i].Value.Equals(strforcheck[j]))
                            {
                                list.Add(match.Value);
                                boolean = true;
                                break;
                            }
                        }
                        if (boolean) break;
                    }
                }
            }
      

  9.   

    条件为 "*>任意字符或符号.数字.数字.数字/最后数字 XXXXXXX"数字部分为 strforcheck 中的任意一个..并且出现一次就满足条件..然后把结果放入List中了
      

  10.   

    string strfortest = @"*>r172.12.12.12/24     10.16.12.1 
    *> 172.16.12.0/2    10.16.12.1 
    *> 172.16.12.0/    10.16.12.1 
    *> 172.16.12.0/    10.16.12.1 
    *> 172.1.1.666/2    10.16.12.1 
    *> 172.1.1.77/2    10.16.12.1 
    *> 172.16.12.8/2    10.16.12.1 
    *> 172.16.12.90/2    10.16.12.1 ";
                var ary = strfortest.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries).Where(t =>
                    Regex.IsMatch(t, @"(?<=^|\D)1[26](?=/|\.\S*?/\d+)")).ToArray();
      

  11.   

    首先谢谢你
    我自己研究了下写了一个,发现正则表达式 处理我这问题不行,太复杂了
    我这个只处理包含12的,把4中情况都列出来了,不知道有没有更好的办法
    (12\.(\d{1,3}\.){2}\d{1,3}/)|
    (\d{1,3}\.12\.\d{1,3}\.\d{1,3}/)|
    ((\d{1,3}\.){2}12\.\d{1,3}/)|
    ((\d{1,3}\.){3}12/)
      

  12.   

    \d{3}\.12\.\d{1,3}\.\d{1,3}\/\d{1,3}~~~如果按照这种  你得匹配你的保留的N*2次~~~~一层一层的循环咯~~~\d{3}\.16\.\d{1,3}\.\d{1,3}\/\d{1,3}
    \d{3}\.34\.\d{1,3}\.\d{1,3}\/\d{1,3}
    \d{3}\.\d{1,3}\.12\.\d{1,3}\/\d{1,3}
    \d{3}\.\d{1,3}\.16\.\d{1,3}\/\d{1,3}无休止~~~~
      

  13.   

    Themida 2.1.2.0我要下载积分