У меня есть несколько хэшей в этом формате:
Как искать шестнадцатеричный шаблон с дикой картой в строке?
row:title:hash:flag
1:upx1:4D 00 68 6B ?? 68 6A:True
2:upx2:68 6B ?? 68 6A 00 02:False
3:upx3:FF 4D ?? 68 6B ?? 68:True
и у меня есть строка, как это:
02 4D 00 68 6B 6A 68 6A 00 02 00 00 00 FF 02 5A 68 6B 6A 68 6A 00 02 00
мне нужно, чтобы соответствовать любой хэш с этой строкой и соответствовать любой шестнадцатеричное значение вместо двойной знак вопроса
, например, хэш в строке 1 «4D 00 68 68 6B ?? 6A» совпадение с моей строки
Я использовал этот код б ешь всегда возвращаться «нет»
string str = "02 4D 00 68 6B 6A 68 6A 00 02 00 00 00 FF 02 5A 68 6B 6A 68 6A 00 02 00";
string hash = "1:upx1:4D 00 68 6B ?? 68 6A:True";
str = string.Join(" ", str.Split().Select(x => string.Format(@"(?:{0}|\?\?)", x)).ToArray());
string sPattern = string.Format(@"(?<row>\w*:)(?<title>\w*:)([^:]*{0}[^:]*:)(?<ep>\w*)", hash);
if (Regex.IsMatch(str, sPattern))
{
MessageBox.Show("ok");
}
else
{
MessageBox.Show("no");
}
Это выглядит так, как будто вы хотите использовать * хэш * значение столбца в качестве шаблона регулярного выражения для проверки строки, верно? Просто извлеките его и замените '?' На '.'. –
Да, но hash.Replace ("?", ".") Не работает! – Tavakkoli
Обязательно, * экстракт * хэш первый. 'var pattern = hash.Split (':') [2] .Replace ("? ",". ")', а затем 'Regex.IsMatch (str, pattern)'. –