我有一个带自定义宏的文本字符串:
"有些文字 {MACRO(parameter1)} 更多文字 {MACRO(parameter2)} "
为了处理宏,我想分割字符串:
预期结果
"一些文字"
" {MACRO(参数1)}"
"更多文字"
" {MACRO(参数2)}"
我尝试使用Regex.Split()
public static string[] Split(string input)
{
var regex = new Regex(@"{MACRO\((.*)\)}");
var lines = regex.Split(input)
return lines;
}
然而,Regex.Split()会删除匹配本身,并提供以下内容:
实际结果
"一些文字"
"更多文字"
我知道我可以在.Match()
和.Substring()
但是有没有一种简单的方法可以将结果和匹配结合起来?
答案 0 :(得分:0)
试试这个
string input = "Some text {MACRO(parameter1)} more text {MACRO(parameter2)}";
string pattern = @"(?'text'[^\{]+)\{(?'macro'[^\}]+)\}";
MatchCollection matches = Regex.Matches(input, pattern);
foreach (Match match in matches)
{
Console.WriteLine("text : '{0}'; macro : '{1}'", match.Groups["text"].Value.Trim(), match.Groups["macro"].Value.Trim());
}
Console.ReadLine();