【发布时间】:2017-06-17 08:18:24
【问题描述】:
我有这样的文本文件:
1:upx1:4D 00 68 6B 6A 68 6A:True
2:upx2:68 6B ?? 68 6A 00 02:False
3:upx3:FF 4D ?? 68 6B ?? 68:True
我有这样的字符串:
4D 5A 02 68 6B 6A
与第 3 行匹配的人
我使用此代码检查正则表达式路径:
string readdb(string hash)
{
using (StreamReader sr = new StreamReader("db.txt"))
{
string re = string.Format(@"(?<row>\w*:)(?<title>\w*:)({0}:)(?<ep>\w*)", hash);
String line;
while ((line = sr.ReadLine()) != null)
{
Regex regex = new Regex(re);
Match match = regex.Match(line);
if (match.Success)
{
return match.Groups[3].Value.ToString();
}
}
return "0";
}
}
但是我的问题是 ??登录文件!
如何匹配任何十六进制值而不是双问号?
【问题讨论】:
-
3:upx3:FF 4D ?? 68 6B ?? 68:True如何匹配4D 5A 02 68 6B 6A? -
仅将“FF 4D ?? 68 6B ?? 68”与“4D 5A 02 68 6B 6A”匹配
-
如果
hash是4D 5A 02 68 6B 6A,则传递给restring.Join(" ", hash.Split().Select(x=>string.Format(@"(?:{0}|\?\?)", x))),参见what regex will look like。 -
顺便说一句,
Regex regex = new Regex(re);必须在while循环之前声明。