用正则表达式分割字符串的正确方法是什么

时间:2016-08-30 15:04:38

标签: c#

我有一个带自定义宏的文本字符串:

  

"有些文字 {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()

的迭代中解析字符串

但是有没有一种简单的方法可以将结果和匹配结合起来?

1 个答案:

答案 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();