找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 24472|回复: 3

[文本处理] findstr的正则表达式无法以字符类别的方式提取含有中文状态下的短横杠字符?

[复制链接]
发表于 2011-7-1 01:25:41 | 显示全部楼层 |阅读模式
假设有test.txt的内容如下:
abc-def
123—456

注意:第二行的短横线是在中文输入法状态下输入的

  1. findstr "—" test.txt
复制代码
可以搜索到第2行内容
换成:

  1. findstr "[—]" test.txt
复制代码
这种按照字符类别的方式没法搜索到第2行内容
莫非又是findstr的一个bug?
发表于 2011-7-1 07:14:55 | 显示全部楼层
本帖最后由 mxxcgzxxx 于 2011-7-1 07:17 编辑

我也试验了一下,应该是无法在字符集内使用双字节的原因
  1. @echo off
  2. :1
  3. set/p p=
  4. echo %p%|findstr "^[—]">nul||echo —
  5. echo %p%|findstr "你好">nul||echo 你好
  6. echo %p%|findstr "[你]">nul||echo 你
  7. pause>nul
  8. goto :1
复制代码
只有"你好"有效,而[—][你]都是无效的,就像[123]并不是识别为123,而是识别为1,2,3一样,所以无法识别做为双字节的中文及中文符号
发表于 2011-7-1 11:55:08 | 显示全部楼层
同意LS,findstr把双字节当单字节对待了
发表于 2011-7-1 13:47:28 | 显示全部楼层
莫非 findstr 不是匹配字节的?看来以前的观点碰到反例了
而且试了下,应该和字符集有关,刚刚做了个实验发现在 437 代码页下 find 命令可以匹配半个宽字节,而 findstr 依然不行,在 936 下则都无效
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 20:45 , Processed in 0.018798 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表