获取正则表达式的次数与转义符号
问题描述:
我很感激非工作正则表达式的帮助(不适用于特殊符号%工作或$)获取正则表达式的次数与转义符号
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
答
您需要转义符号。尝试改变
new Regex(beginMark + @"(?<val>.*?)" + endMark,
到
new Regex(Regex.Escape(beginMark) + @"(?<val>.*?)" + Regex.Escape(endMark),
所以,你要得到三个预期的输出? –
是的,这是一种解析环境变量 –