C#中的正则表达式匹配和拆分字符串

时间:2015-08-19 16:13:26

标签: c# regex split pattern-matching match

我有一些以下格式的ASCII文档:

[section heading]
paragraphs......

[section heading]
paragraphs......
...
  

注意:标题文字始终以某种特定模式括起来(例如上例中的[ ]

我想将文件拆分为单独的部分(每个部分都带有标题内容)。

解析上述文档的最有效方法是什么?

使用Regex.Match()我可以提取标题,但不提取后续的文字内容。

使用Regex.Split()我可以获取内容,但不能获取相关标题。

是否可以将这两个Regex方法结合起来解析文档?是否有更好的方法来实现同样的目标?

2 个答案:

答案 0 :(得分:1)

试试这个:

string search = "\[([\w ]+)\]([^\[]*)";
foreach (Match match in Regex.Matches(yourtext, search))
    {
        string heading = match.Groups[1];
        string text = match.Groups[2];
    }

正则表达式捕获标题段落。由于捕获组(在括号之间),您可以通过迭代匹配来提取它们。

答案 1 :(得分:1)

(\[[^\]]*\])\n([\s\S]*?)(?=\n\[|$)

你可以试试这个。抓住第1组和第2组。参见演示。

https://regex101.com/r/gU4aG0/1