在正则中特殊字符怎么让他们变成普通的字符。我在下面代码start中输入.他就达不到我想要的效果了
       #region 取中间内容
        /// <summary>
        /// 取中间内容
        /// </summary>
        /// <param name="text">要输入的文本</param>
        /// <param name="start">取内容的前面</param>
        /// <param name="end">取内容的后面</param>
        /// <returns></returns>
        public string Middle(string text, string start, string end)
        {
            Regex regex = new Regex(string.Format("(?<={0}).*(?={1})", start, end));
            Match flag = regex.Match(text);
            return flag.Value;
        }
        #endregion

解决方案 »

  1.   

    #region 取中间内容
    /// <summary>
    /// 取中间内容
    /// </summary>
    /// <param name="text">要输入的文本</param>
    /// <param name="start">取内容的前面</param>
    /// <param name="end">取内容的后面</param>
    /// <returns></returns>
    public string Middle(string text, string start, string end)
    {
    Regex regex = new Regex(string.Format("(?<={0}).*(?={1})", Regex.Escape(start), Regex.Escape(end)));
    Match flag = regex.Match(text);
    return flag.Value;
    }
    #endregion
      

  2.   


    using System;public class Test
    {
    public void Middle(string start, string end)
    {
    string pat1 = string.Format("(?<={0}).*(?={1})", start, end);
            Console.WriteLine(pat1);        string pat2 = string.Format("(?<={{0}}).*(?={{1}})", start, end);
            Console.WriteLine(pat2);        string pat3 = string.Format(@"(?<={{{0}}}).*(?={{{1}}})", start, end);
            Console.WriteLine(pat3);
    } public static void Main(string[] args)
    {
    string start = "12";
    string end = "35";
            Test t = new Test(); t.Middle(start, end);
    }
    }编译运行:
    E:\>csc a.cs
    Microsoft(R) Visual C# 2010 编译器 4.0.30319.1 版
    版权所有(C) Microsoft Corporation。保留所有权利。
    E:\>a.exe
    (?<=12).*(?=35)
    (?<={0}).*(?={1})
    (?<={12}).*(?={35})E:\>
    结果:用"{{"可以输出一个"{}",同理,"}}"代表一个"}"