首先谢谢mbh0210(独孤求败),给的方法,如下:
public List<string> GetData(string strParameter,string str)
        {
            List<string> datalist = new List<string>();
            string strReg = string.Format("(?is)(?<=,){0}[^,]*,",strParameter);
            Regex re = new Regex(strReg);
            foreach (Match mc in re.Matches(str))
            {
                datalist.Add(mc.Value);
            }            return datalist ;
        }下面有一个字符串:
“010101,00000000,00100000,”
可以取到“00”开头的“00000000,”和“00100000,”,但是取不到“01”开头的“010101,”,太遗憾了小弟不明白啊,为什么会这样,不懂正则,那位大侠能帮忙完善下吗?

解决方案 »

  1.   

    这个没必要用正则,用字符串对象的IndexOf("01")就行了,如果"01"出现在开头则返回0
      

  2.   

    indexOF也可以。。正则还是等正则大侠来吧
      

  3.   


                Regex re = new Regex(@"[\d]{0,}");
                MatchCollection olletion = re.Matches("010101,00000000,00100000,hello,world");
      

  4.   


    我写了个,变量名字不就不讲究了:
    protected void Page_Load(object sender, EventArgs e)
    {
    string s = "010101,00000000,00100000,01100101";
    string[] result = abc(s, "00");
    for (int i = 0; i < result.Length; i++)
    Response.Write(result[i] + "<br/>"); }
    public string[] abc(string srcStr, string qiandao)
    {
    string[] ss = srcStr.Split(',');
    List<string> r = new List<string>();
    for (int i = 0; i < ss.Length; i++)
    {
    if (ss[i].IndexOf(qiandao) == 0)
    r.Add(ss[i] + ",");
    }
    return r.ToArray();
    }
      

  5.   

    //因为是以0为开头,所以只要替换第二个字符就可以
    //如果你要换成01 只要把i=1,已测试
                int i = 0;
                string str = "000001,010001,011111,022114,001111,000111,020001,030000,010000";
                Regex reg = new Regex(@"(?<=^|,)0" + i + "[^,]*");
                foreach (Match m in reg.Matches(str))
                {
                    Response.Write(m.Value + "<br/>");
                }
    /*
    输出
    000001
    001111
    000111
    */
      

  6.   

                int i = 1;
                string str = "000001,010001,011111,022114,001111,000111,020001,030000,010000";
                Regex reg = new Regex(@"(?<=^|,)0" + i + "[^,]*");
                foreach (Match m in reg.Matches(str))
                {
                    Response.Write(m.Value + "<br/>");
                }
    /*
    010001
    011111
    010000
    */
      

  7.   


    string strReg = string.Format("(?is)(?<=,){0}[^,]*,",strParameter);
    //上面这句话  匹配,后面且以0开头的字符串//因为010101,不是在“,”后面  所以匹配不到  可替换如下:
    string strReg = string.Format("(?is)(?<=^|,){0}[^,]*,",strParameter);
      

  8.   

        public string ReplaceData(string strParameter, string str)
        {
            return Regex.Replace(str, @"(^|(?<s>,))" + strParameter + "[^,]*(?(s)|,?)", "");
        }
        public List<string> GetData(string strParameter, string str)
        {
            List<string> datalist = new List<string>();
            string strReg = string.Format(@"(?<=^|,){0}[^,]*", strParameter);
            Regex re = new Regex(strReg);
            foreach (Match mc in re.Matches(str))
            {
                datalist.Add(mc.Value);
            }
            return datalist;
        }
    //调用
                string str = "000001,010001,011111,022114,001111,000111,020001,030000,010000";
                foreach (string s in GetData("01", str))
                {
                    Response.Write(s + "<br/>");
                }
                Response.Write("<br/><br/>");
                Response.Write(ReplaceData("01", str));
    /*
    输出
    010001
    011111
    010000
    000001,022114,001111,000111,020001,030000 
    */
      

  9.   

    修改如下: public List<string> GetData(string strParameter, string str)
            {
                List<string> datalist = new List<string>();
                str = "," + str;
                string strReg = string.Format("(?is)(?<=,){0}[^,]*,", strParameter);
                Regex re = new Regex(strReg);
                foreach (Match mc in re.Matches(str))
                {
                    datalist.Add(mc.Value);
                }            return datalist;
            }