如题,[objectID=5,flag=3]hello 如何匹配这样的字符串,并取出 5,3,还有 hello 

解决方案 »

  1.   

    [ = ] 替换成"," 取 3 5 hello?
      

  2.   

    呃,hello,world 后面那句话存在可以存在 , 符号
      

  3.   

    类似 string pattern = @"(?<=^\[length=)(\d+)(?=\])";
    if (Regex.IsMatch(input, pattern)) {
        Match m = Regex.Match(input, pattern);
        // 获取消息字符串实际应有的长度
        length = Convert.ToInt32(m.Groups[0].Value);
    }
      

  4.   

    哪里是固定的,哪里是变化的,[]的参数个数是否固定,正则相关问题,规律或规则要给出            string test = "[objectID=5,flag=3]hello";
                Regex reg = new Regex(@"(?i)\[objectID=([^,]*),flag=([^\]]*)\](\S*)");
                Match m = reg.Match(test);
                if (m.Success)
                {
                    richTextBox2.Text += m.Groups[1].Value + "\n";
                    richTextBox2.Text += m.Groups[2].Value + "\n";
                    richTextBox2.Text += m.Groups[3].Value + "\n";
                }
      

  5.   

    [objectID= 这个是固定,后面跟着数字 ,flag=这个也是固定,后面跟着数字 ]还有这个也是固定, hello 这个属于不确定的
      

  6.   

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Text.RegularExpressions;namespace RegexTest
    {
        class Program
        {
            static void Main(string[] args)
            {
                Regex reg = new Regex(@"(?<objID>(?<=objectID=)\d+)\S+(?<flag>(?<=flag=)\d+)\S+(?<str>(?<=])\S+)");
                string srcStr = "[objectID=5,flag=3]hello";
                string objID = reg.Match(srcStr).Groups["objID"].Value;
                string flag = reg.Match(srcStr).Groups["flag"].Value;
                string str = reg.Match(srcStr).Groups["str"].Value;
                string desStr = objID + " " + flag + " " + str;
                Console.WriteLine(desStr);
                Console.Read();
            }
        }
    }
      

  7.   

    如果是 [objectID=0,flag=1]hello[objectID=0,flag=1]good 如果是两条,如何解出,不甚感激
      

  8.   


    其实主要是hello的规则,如何知道它已经结束了,或者说匹配到哪为止
    string test = "[objectID=0,flag=1]hello[objectID=0,flag=1]good ";
    Regex reg = new Regex(@"(?i)\[objectID=([^,]*),flag=([^\]]*)\]([^\[\]]*)");
    MatchCollection mc = reg.Matches(test);
    foreach(Match m in mc)
    {
        richTextBox2.Text += m.Groups[1].Value + "\n";
        richTextBox2.Text += m.Groups[2].Value + "\n";
        richTextBox2.Text += m.Groups[3].Value + "\n";
    }
      

  9.   


    后一个good 显然不是的,不过我13楼的代码应该可以满足你的需求了