使用正则表达式和标签提取文本部分

3

我有一个包含特殊标签的文本文件,例如:

{A1}
Text 1
{A1}

{A2}
Text 2
{A2}

我该如何使用正则表达式从文本中提取出Text 2Text 1?我想只提取A1标签之间的内容或者只提取A2标签之间的内容,而不是一次性提取所有内容!谢谢!

特殊标签可以嵌套吗? - Mark Byers
所有的标签都是依次排列在一起的,就像军队一样 :)... - Adrian
2个回答

1

如果您假设文档格式正确,且标签未嵌套,则可以使用以下正则表达式完成:

@"({.*?})(.*)\1"

例子:

Regex regex = new Regex(@"({.*?})(.*?)\1", RegexOptions.Singleline);
foreach (Match match in regex.Matches(s)) {
    Console.WriteLine(match.Groups[2].Value.Trim());
}

输出:

文本1
文本2

如果我只需要文本1或文本2怎么办? - Adrian

1
在C#中,你可以像这样做:

string output = Regex.Replace(YOUR_TEXT, @"\{(?<Tag>\w+).*?\}(?<text>\w+).*?\{\k<Tag>\}", "$2");

不支持嵌套标签。


好的,如果你检查一下,你会发现它返回文本。 - Ventus

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接