【正则表达式】求一写法。好像应该叫近匹配有  123{abc}465{xyz}789
求 获得abc xyz的正则表达式{.*} 返回{abc}465{xyz}
怎样写能得到{abc}
最好能去掉{},不去掉也行,这个好处理。

解决方案 »

  1.   

    要去掉花括号的话就:
    (?<={).*?(?=})

    (?<={)[^}]*(?=})
      

  2.   

    我是初学者。只是知道普通字符和元字符,不会用。我只会下面这类型的方法。              string str1 = "123{abc}465{xyz}789";
                string str2 = "";
                foreach (char ch in str1)
                {
                    if (ch >= 97 && ch <= 123)
                    {
                        str2 = str2 + ch;
                    }
                }
                string[] s = str2.Split('{');
                Console.WriteLine("asd");
                for (int i = 1; i < s.Length; i++)//s[0]=null
                {
                    Console.WriteLine(s[i]);
                }LZ或者LSLX的可不可以把正则写全了呀?或者把上面的改成正则?
      

  3.   


    那就写完整吧:Regex reg=new Regex("(?<={)[^}]*(?=})");//或者用(?<={).*?(?=})
    string str="123{abc}465{xyz}789";
    string result=string.Empty;
    foreach(Match m in reg.Matchs(str))
    {
     result+=m.Value+"\r\n";
    }
      

  4.   

    代码有点问题
    .Matchs(str)//少了个e看来你是直接手写的感谢