Извлечение значения между двойными кавычками, используя регулярное выражение
string emailBody = "sample text for NewFinancial History:\"xyz\" text NewFinancial History:\"abc\" NewEBTDI$:\"abc\" ds \"NewFinancial History:pqr\" test";
private Dictionary<string, List<string>> ExtractFieldValuesForDynamicListObject(string emailBody)
{
Dictionary<string, List<string>> paramValueList = new Dictionary<string, List<string>>();
try
{
emailBody = ReplaceIncompatableQuotes(emailBody);
emailBody = string.Join(" ", Regex.Split(emailBody.Trim(), @"(?:\r\n|\n|\r)"));
var keys = Regex.Matches(emailBody, @"\bNew\B(.+?):", RegexOptions.Singleline).OfType<Match>().Select(m => m.Groups[0].Value.Replace(":", "")).Distinct().ToArray();
foreach (string key in keys)
{
List<string> valueList = new List<string>();
string regex = "" + Regex.Escape(key) + ":" + "\"(?<" + Regex.Escape(GetCleanKey(key)) + ">[^\"]*)\"";
var matches = Regex.Matches(emailBody, regex, RegexOptions.Singleline);
foreach (Match match in matches)
{
if (match.Success)
{
string value = match.Groups[Regex.Escape(GetCleanKey(key))].Value;
if (!valueList.Contains(value.Trim()))
{
valueList.Add(value.Trim());
}
}
}
valueList = valueList.Distinct().ToList();
string listName = key.Replace("New", "");
paramValueList.Add(listName.Trim(), valueList);
}
}
catch (Exception ex)
{
DCULSLogger.LogError(ex);
}
return paramValueList;
}
Моя цель здесь, чтобы просмотреть хотя теле сообщения электронной почты и определить строку с NewListName: «Value» номенклатура и она работает прекрасно, используя выше регулярного выражения и метода. Теперь мой клиент изменил номенклатуру от NewListName: «Value» до «NewListName: Value». Я хочу захватить текст между двойными кавычками вместе с ключевым словом New:. Поэтому мне нужно искать «Новые ключевые слова» и «Конец цитаты». Может ли кто-нибудь помочь мне изменить указанное выше регулярное выражение для сканирования через тело электронной почты и получить весь список значений между двойными кавычками. Поэтому в приведенном выше примере я хочу получить «NewFinancial History: pqr \» в моих результатах. Любая помощь будет оценена по достоинству.
Попробуйте 'ключей вара = Regex.Matches (emailBody, @ "" "Новый [^" ":] +: [^" "] +" "", RegexOptions .Selectline) .OfType() .Выберите (m => m.Value) .Distinct(). ToArray(); ' –
Это сработало. Благодаря !!! Не могли бы вы объяснить регулярное выражение? –
Отлично, пожалуйста, проверьте ответ ниже, я опубликовал объяснение. –