Это не самая лучшая идея делать эту задачу с регулярными выражениями из-за сложности времени, я думаю.Например, мы можем проверить это выражение,
(?<=>)([^<]*?)(?=<)|\b([^<>]{2,})
, которое объяснено на верхней правой панели этой демонстрации , если вы хотите исследовать дальше, и в этой ссылке, вы можете посмотреть, как шаг за шагом он будет сопоставляться с некоторыми примерами входных данных, если хотите, и насколько неэффективным может быть процесс.
Пример
using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
string pattern = @"(?<=>)([^<]*?)(?=<)|\b([^<>]{2,})";
string input = @"Lorem ipsum dolor sit <b>amet, consectetur adipiscing elit,</b>
sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut
enim ad minim veniam, quis nostrud exercitation <i>ullamco laboris
nisi ut</i> aliquip ex ea commodo consequat. Duis aute irure dolor in
reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla
pariatur. Excepteur sint occaecat cupidatat non proident, sunt in
culpa qui officia deserunt mollit anim id est laborum.";
RegexOptions options = RegexOptions.Singleline;
foreach (Match m in Regex.Matches(input, pattern, options))
{
Console.WriteLine("'{0}' found at index {1}.", m.Value, m.Index);
}
}
}