c# byte[]数组的正则表达式搜索

在byte[]数组的特定位置进行正则表达式匹配。

为了从硬盘上搜索特定类型的文件,需要根据文件的特征值进行匹配。

对于已掌握文件结构的文件,采用hard-code的方式进行匹配;这样速度快;

对于未掌握文件结构的文件,根据文件的特征数据,使用正则表达式进行匹配。缺点是匹配速度慢。但是相对于阅读或破解每种文件的数据结构,可以节约开发时间。

由于C#中的正则表达式引擎仅提供了对字符串的正则匹配,而我们从硬盘上读取的数据是byte[]类型,所以需要添加对byte[]数据进行正则匹配的支持。

另外,文件的特征值应(否则就很难称之为“特征”了)出现在固定的位置,所有要指定在特定位置进行正则匹配。

 1 using System.Text.RegularExpressions;        
 2 
 3 //byte[]数组Grep搜索,确定在指定offset处是否匹配正则表达式字符串
 4 //buffer:要搜索的byte[]数组
 5 //regex:要匹配的正则表达式字符串
 6 //offset:buffer数组的偏移
 7         public static bool BinaryRegex(byte[] buffer, string regex,int offset)
 8         {
 9             List<char> charList = new List<char>();
10             foreach (byte b in buffer)
11             {
12                 charList.Add((char)b);
13             }
14             string bString = new String(charList.ToArray());
15             Match match = Regex.Match(bString,regex);
16             if (match.Success && match.Index == offset)
17                 return true;
18             else return false;
19         }

 

转载于:https://www.cnblogs.com/shanon/p/BinaryRegex.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值