现在需要从外部输入字符串a,在(string)b中匹配。先将a转化为(string)c,然后用regex.match方法匹配:
Regex t = new regex(c);
Match tt = t.Match(b);
绝大部分时间可以满足需求。但是由于外部输入a无法确定,这次碰到了(0x89 0x50 0x4e 0x47 0x0d 0x0a 0x1a 0x0a),转换为string c后,被regex识别为正则表达式。
由于外部输入不确定性,难道真要每个字符判断然后加转义符,有通用一点的方法吗?
我想C#下时候有基于byte[]的匹配吗?问题较菜,谢谢各位了!
Regex t = new regex(c);
Match tt = t.Match(b);
绝大部分时间可以满足需求。但是由于外部输入a无法确定,这次碰到了(0x89 0x50 0x4e 0x47 0x0d 0x0a 0x1a 0x0a),转换为string c后,被regex识别为正则表达式。
由于外部输入不确定性,难道真要每个字符判断然后加转义符,有通用一点的方法吗?
我想C#下时候有基于byte[]的匹配吗?问题较菜,谢谢各位了!
实验的时候又发现一个问题,使用
Regex t = new Regex(Regex.Escape(c));
确实将c中字符进行转义。
但是原程序中b也是从byte[]转换过来,转换代码:
string b = System.Text.Encoding.ASCII.GetString(array);
但是却将array中0x89转换成0x003f,所以还是没有匹配成功。
这是怎么回事呢?(0x89在原字符串首位)
再次感谢lxcnn。
其它都转换正常吗?看下你的编码是否正确
string b = System.Text.Encoding.ASCII.GetString(array);