标题: [文本处理] 批处理命令FINDSTR为何无法正确匹配中文关键词/字符串? [打印本页]
作者: oloyyy 时间: 2012-4-13 22:16 标题: 批处理命令FINDSTR为何无法正确匹配中文关键词/字符串?
本帖最后由 pcl_test 于 2017-4-6 08:30 编辑
楼主写一个统计病区用药的批时,发现:
1.findstr "片 粒" 无法实现匹配含"片"或"粒"的行,加/r开关后可实现,但仍不解其理。
2.使用findstr /r /c:" [^ ]*粒"时,前处空处为制表符,发现"粒"会匹配"辛(",此处括号为中文括号。去掉/r时"粒"不会匹配"辛("但其中正则式不能用。怀疑是编码问题,于是用notepad++试了下,以UTF-8格式编码时,发现"辛"的右边与"("的左边的编码,同"粒"的编码。问如何解决。
对/r的作用似懂非懂,希望高手不吝赐教,楼主感激不尽!
PS:用findstr匹配中文真是相当的蛋疼
作者: CrLf 时间: 2012-4-13 22:24
本帖最后由 CrLf 于 2012-4-13 22:27 编辑
第一个问题,匹配多组宽字符时,findstr 本身有 bug,只能用 /r 或 /l 来强制修正或使用/c开关:复制代码
第二个问题的原因是 findstr 匹配的是字节而非字符,试运行:- echo 粒辛(>test.txt
- echo d^&echo q | debug test.txt
复制代码
你看到了什么?
粒的内码为 C1A3,而辛和为(的内码分别为 D0C1 与 A3A8,所以...
作者: gawk 时间: 2012-4-13 22:25
findstr "片 粒" 无法实现匹配含"片"或"粒"的行
可以这样:复制代码
作者: oloyyy 时间: 2012-4-13 22:37
大侠们真及时啊,先顶后看
作者: oloyyy 时间: 2012-4-13 22:46
谢谢版主,但第2个问题咋解决呢
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |