string emailBody = " holla holla testing is for NewFinancial History:\"xyz\" dsd NewFinancial History:\"abc\" NewEBTDI$:\"abc\" dsds ";
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 = "" + key + ":" + "\"(?<" + GetCleanKey(key) + ">[^\"]*)\"";
var matches = Regex.Matches(emailBody, regex, RegexOptions.Singleline);
foreach (Match match in matches)
{
if (match.Success)
{
string value = match.Groups[GetCleanKey(key)].Value;
if (!valueList.Contains(value.Trim()))
{
valueList.Add(value.Trim());
}
}
}
public string GetCleanKey(string key)
{
return key.Replace(" ", "").Replace("-", "").Replace("#", "").Replace("$", "").Replace("*", "").Replace("!", "").Replace("@", "")
.Replace("%", "").Replace("^", "").Replace("&", "").Replace("(", "").Replace(")", "").Replace("[", "").Replace("]", "").Replace("?", "")
.Replace("<", "").Replace(">", "").Replace("'", "").Replace(";", "").Replace("/", "").Replace("\"", "").Replace("+", "").Replace("~", "").Replace("`", "")
.Replace("{", "").Replace("}", "").Replace("+", "").Replace("|", "");
}
沿REG EX特定單詞在我上面的代碼中,我試圖將價值得到旁邊NewEBTDI$:
這是。查找具有特殊字符
當我包含$
登錄模式時,它不搜索字段名稱旁邊的值。
如果$
被刪除,並且只是指定NewEBTDI
那麼它會搜索值。
我想搜索的值與$
符號。
請妥善安排您的代碼。它不可讀。 – 2016-01-21 20:17:59
「$」在正則表達式中有特殊的含義。用\脫出它。但在你的情況下,你將不得不做一個String.Replace()方法,因爲你的正則表達式是生成的。您可能還有其他特殊字符... –