Использование регулярного выражения в C # для соответствия тексту в формате rtf - PullRequest
1 голос
/ 05 июля 2011

Мне нужно использовать регулярное выражение для извлечения жирного текста из текста в формате RTF. Например: \ b коричневая лиса \ b0 перепрыгнула через \ b ленивую собаку \ b0.

Как я могу получить только текст, заключенный между \ b и \ b0? Я попробовал это выражение, но оно вернуло только первое совпадение: (\\b.+\b0[^\\b])

Ответы [ 2 ]

3 голосов
/ 05 июля 2011
string s = @"The \b brown fox\b0 jumped over the \b lazy dog\b0";

Regex rgx = new Regex(@"\\b(.*?)\\b0");
foreach (Match m in rgx.Matches(s))
{
    Console.WriteLine(m.Groups[1].Value);
}

В качестве альтернативы вы можете использовать снимки:

string s = @"The \b brown fox\b0 jumped over the \b lazy dog\b0";

Regex rgx = new Regex(@"(.*?\\b(.*?)\\b0)*");
foreach (Capture c in rgx.Match(s).Groups[2].Captures)
{
    Console.WriteLine(c.Value);
}
1 голос
/ 05 июля 2011

Используйте это регулярное выражение:

\\b([\s\S]+?)\\b0
...