在正则中特殊字符怎么让他们变成普通的字符。我在下面代码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
#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
/// <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
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:\>
结果:用"{{"可以输出一个"{}",同理,"}}"代表一个"}"