используя регулярные выражения и теги для извлечения части текста - PullRequest
3 голосов
/ 09 сентября 2010

Итак, у меня есть текстовый файл со специальными тегами, такими как:

{A1}
Text 1
{A1}

{A2}
Text 2
{A2}

Как я могу извлечь из текста, используя reg-ex часть Text 2 или Text 1 ..? Так что я могу извлечь только то, что находится между тегами А1 или только то, что находится между тегами А2 ... не все из них ... сразу! спасибо!

Ответы [ 2 ]

1 голос
/ 09 сентября 2010

В C # вы можете сделать что-то вроде этого:


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

Вложенные теги не поддерживаются.

1 голос
/ 09 сентября 2010

Вы можете сделать это с помощью следующего регулярного выражения, если предположите, что документ правильно сформирован и ваши теги не вложены:

@"({.*?})(.*)\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
...