获取正则表达式的次数与转义符号

问题描述:

我很感激非工作正则表达式的帮助(不适用于特殊符号%工作或$)获取正则表达式的次数与转义符号

public System.Tuple<string, string> GetParts(string str, string beginMark, string endMark) 
    { 
     var pattern = 
      new Regex(beginMark + @"(?<val>.*?)" + endMark, 
       RegexOptions.Compiled | 
       RegexOptions.Singleline); 

     return (from Match match in pattern.Matches(str) 
       where match.Success 
       select new Tuple(
        match.Value, 
        match.Groups["val"].Value)) 
       .ToList(); 
    } 

调用方法:

string input = @"%sometext%\another text"; 
string replacedValue = "AAA"; 
var occurrences = GetPart(input, @"(%", ")"); 
foreach (var occurrence in occurrences) 
{ 
    Console.WriteLine(occurrence.Item1 + Environment.NewLine); 
    Console.WriteLine(occurrence.Item2 + Environment.NewLine); 
    // replace 
    onsole.WriteLine(input.Replace(occurrence.Item1, replacedValue) + Environment.NewLine); 
} 

预期输出:

%sometext%

sometext

AAA \ another text

+0

所以,你要得到三个预期的输出? –

+0

是的,这是一种解析环境变量 –

您需要转义符号。尝试改变

new Regex(beginMark + @"(?<val>.*?)" + endMark, 

new Regex(Regex.Escape(beginMark) + @"(?<val>.*?)" + Regex.Escape(endMark),