2010-09-09 91 views
3

的部分,我有一个是,如特殊标记的文本文件:使用正则表达式和标签中提取文本

{A1} 
Text 1 
{A1} 

{A2} 
Text 2 
{A2} 

我如何使用REG-EX的部分Text 2Text 1从文本中提取。 。? 所以我能够只提取标签A1之间或标签A2之间的内容......而不是所有这些......一次! 谢谢!

+0

特殊标签可以嵌套吗? – 2010-09-09 19:31:40

+0

不......所有的标签都一致......一个接一个......像在军队里......) – Adrian 2010-09-09 20:05:27

回答

1

在C#中,您可以这样做:


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

不支持嵌套标签。

+0

我需要提取文本才能取代.... – Adrian 2010-09-09 20:08:40

+0

那么,如果你会检查你会看到它返回文本 – Ventus 2010-09-09 20:47:18

1

你可以用下面的正则表达式做,如果你认为该文件是良好和你的标签是不嵌套:

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

例子:

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

输出:

 
Text 1 
Text 2 
+0

如果我只需要Text 1或者只需Text 2 ..? – Adrian 2010-09-09 19:47:27