Захват нескольких строк с использованием регулярных выражений (.Net) - PullRequest
0 голосов
/ 18 декабря 2009

Я пытаюсь написать регулярное выражение, которое может анализировать текст между тегами

. В строке будет до 3 строк текста. Я думал, что это возможно, используя функцию (? = Поиск впереди.

Код, который я сейчас использую для получения одной строки, выглядит следующим образом.

<p>([^']*?)<[/]p

Возможно ли иметь одно регулярное выражение, которое может получать текст между несколькими строками тегов? Каждая строка должна быть в отдельной группе.

Примером будет

 <p>The</p>
 <p>Grey</p>
 <p>Fox</p>

1 Ответ

2 голосов
/ 18 декабря 2009

Во-первых, с помощью Html Agility Pack это будет легко, и вы получите более надежное решение.

Но вы можете сделать это с помощью регулярных выражений в определенных ситуациях, если вы на 100% контролируете формат и ввод поступает из надежного источника:

Match match = Regex.Match(html, @"(?:<p>(.*?)</p>\s*)+", RegexOptions.Singleline);
if (match.Success)
{
    foreach (Capture line in match.Groups[1].Captures)
        Console.WriteLine(line.Value);
}

Выход:

The
Grey
Fox
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...