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で文字列を特定することですを抽出します正規表現とメソッドの上に。今私のクライアントは、NewListName: "値"から "NewListName:値"に命名法を変更しました。私は二重引用符の間にあるテキストをNew:キーワードと共につかみたい。だから私は "新しいキーワードと"引用符を探す必要があります。誰も私は電子メールの本文をスキャンし、二重引用符の間の値のすべてのリストを取得する上記の正規表現を変更することができます。上記の例では、私の結果に\ "NewFinancial History:pqr \"をつけたいと思っています。どんな助けもありがとう。
は 'VARキー= Regex.Matches(emailBody、@ "" "新しい[^" ":]試してみてください:RegexOptions、[^" "] +" "" + 。単一行).OfType().Select(m => m.Value).Distinct()。ToArray(); ' –
それは働いた。ありがとう!!!あなたは正規表現を説明していただけますか? –
偉大な、以下の答えを確認してください、私は説明を掲載しました。 –