字符串匹配问题!

qqqqqqpppp 2009-09-27 11:00:02
现在需要从外部输入字符串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[]的匹配吗?问题较菜,谢谢各位了!
...全文
69 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
-过客- 2009-09-29
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 qqqqqqpppp 的回复:]
但是原程序中b也是从byte[]转换过来,转换代码:
string b = System.Text.Encoding.ASCII.GetString(array);
但是却将array中0x89转换成0x003f,所以还是没有匹配成功。
[/Quote]

其它都转换正常吗?看下你的编码是否正确
string b = System.Text.Encoding.ASCII.GetString(array);
qqqqqqpppp 2009-09-28
  • 打赏
  • 举报
回复
十分感谢lxcnn的答复。
实验的时候又发现一个问题,使用
Regex t = new Regex(Regex.Escape(c));
确实将c中字符进行转义。
但是原程序中b也是从byte[]转换过来,转换代码:
string b = System.Text.Encoding.ASCII.GetString(array);
但是却将array中0x89转换成0x003f,所以还是没有匹配成功。
这是怎么回事呢?(0x89在原字符串首位)
再次感谢lxcnn。
-过客- 2009-09-27
  • 打赏
  • 举报
回复
动态生成正则表达式时,需要用Regex.Escape对输入字符串进行转义处理

Regex t = new Regex(Regex.Escape(c));
-过客- 2009-09-27
  • 打赏
  • 举报
回复
Regex t = new  regex(Regex.Escape(c)); 
renyinick2 2009-09-27
  • 打赏
  • 举报
回复
静观。。。

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧