В шаблонах регулярных выражений старайтесь не избегать попыток сопоставить все, что есть, создавая наборы вещей, если они не нужны, но найдите якоря и используйте общее сопоставление с образцом, чтобы найти то, что нужно ..
Следующие будут использовать якоря #1
, submitted by
и [sp]on[sp]
, а затем мы сделаем общее извлечение вокруг этого. Наконец, базовый шаблон даты будет использоваться для получения даты. Обратите внимание, что я использую именованные захваты группы, чтобы упростить извлечение.
string data = "#1 xxxxx xxxxx assigned by Alex xxxxx on 08/10/2018,Request submitted by xxxxx on 08/10/2018,Request created by xxxxx Olander on 08/10/2018 Mailed: 1";
string pattern = @"
\#\d+\s+ # Anchor for the #
(?<Person1>.+?) # Match Person 1
(?=\sassigned\s) # Look Ahead for assigned
\sassigned\sby\s # Consume but don't match assigned
(?<Person2>.+?) # Match person 2
(?=\son\s) # LA for son
\son\s # consume
(?<Date>\d\d\D\d\d\D\d\d\d\d) #Get date
";
Regex.Matches(data, pattern, RegexOptions.IgnorePatternWhitespace)
.OfType<Match>()
.Select(mt => new {
P1 = mt.Groups["Person1"].Value,
P2 = mt.Groups["Person2"].Value,
DTE = mt.Groups["Date"].Value,
} )
В результате получается список из одного предмета, я полагаю, у вас есть несколько снимков.
