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

[文本处理] 【已解决】批处理如何删除文本所有格式,只保留汉字?

[复制链接]
发表于 2018-7-28 16:19:54 | 显示全部楼层 |阅读模式
本帖最后由 屡败屡战 于 2018-7-29 20:07 编辑

本人要处理大量的文档,要求将文档内容里的所有格式、换行符、回车符、空格、标点符号、数字、英文字母等等,一切全部删除,只保留汉字即可。不知能否实现??

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2018-7-28 22:30:10 | 显示全部楼层
可以试试用正则表达式,直接匹配出汉字。可以选择支持\p 正则的 语言或工具。 Perl,PHP, Ruby等  应该支持。python不支持。
我用了grep
  1. grep -Po '\p{Han}+' 1.txt >2.txt
复制代码
 楼主| 发表于 2018-7-28 23:07:17 | 显示全部楼层
好像正是我想要的,问下,如何处理大量文本呢?
发表于 2018-7-28 23:50:31 | 显示全部楼层
回复 2# cfwyy77_bat

更强大的python正则表达式模块 -- regex

    https://www.cnblogs.com/gayhub/p/6354097.html

评分

参与人数 1技术 +1 收起 理由
屡败屡战 + 1 谢谢帮助

查看全部评分

 楼主| 发表于 2018-7-29 00:16:53 | 显示全部楼层
我电脑没安装python3,我下载试试,以前没用过这个。
发表于 2018-7-29 09:00:39 | 显示全部楼层
回复 4# codegay
对对,谢谢大佬提醒,我应该说python的标准正则库re 不支持。
发表于 2018-7-29 09:02:26 | 显示全部楼层
回复 3# 屡败屡战
先搞定单个文本,多个你再自由发挥好了
发表于 2018-7-29 11:06:12 | 显示全部楼层
回复 6# cfwyy77_bat


    好多工具的正则不支持{han}这样的表达式,比如notepad++,notepad2-mod,还有python,但是支持\u来匹配unicode的范围。
所以可以用\u来匹配中文的unicode范围。
发表于 2018-7-29 11:22:08 | 显示全部楼层
正则用\w把字符滤出来,然后再滤掉数字和字母。就可以得到楼主想要的结果了。
发表于 2018-7-29 12:21:56 | 显示全部楼层
  1. PowerShell -c "dir *.txt | ForEach{$str=(type $_) -join '' -replace '[^\u3400-\u9FFF]+'; sc ($_.Name+'.Log') -value $str}"
复制代码
  1. @if(0)==(0) echo off
  2. dir /b *.txt | cscript //nologo //e:jscript "%~f0"
  3. pause & goto :EOF
  4. @end

  5. var fso = new ActiveXObject('Scripting.FileSystemObject');

  6. while(!WSH.StdIn.AtEndOfStream){
  7.     var strFile = WSH.StdIn.ReadLine();
  8.     var str = fso.OpenTextFile(strFile, 1).ReadAll().replace(/[^\u3400-\u9FFF]+/g, '');
  9.     fso.OpenTextFile(strFile + '.Log', 2, 1).Write(str);
  10. }
复制代码
参考:中日韩统一表意文字字符集范围

评分

参与人数 1技术 +1 收起 理由
屡败屡战 + 1 老师神来之笔,谢谢了

查看全部评分

发表于 2018-7-29 13:00:15 | 显示全部楼层
回复 3# 屡败屡战


    可以用 for + grep 处理大量文件

评分

参与人数 1技术 +1 收起 理由
屡败屡战 + 1 谢谢帮助

查看全部评分

发表于 2018-7-29 20:39:41 | 显示全部楼层
WHY用的范围可太大了。
https://www.cnblogs.com/chenwenb ... /08/17/2142718.html
我搜索到多是用0x4E00~0x9FA5
一部分是9FBF
发表于 2018-7-29 23:20:56 | 显示全部楼层
回复 12# codegay


    是的,\u3400-\u4DBF 属于扩展A区,一般用不到,加不加基本没有区别。

CJK Unified Ideographs 在 .NET 正则中的区间是 \u4E00-\u9FFF,也就是 \p{IsCJKUnifiedIdeographs}
参考:https://docs.microsoft.com/zh-cn ... regular-expressions

评分

参与人数 1技术 +1 收起 理由
codegay + 1 1

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-18 15:32 , Processed in 0.030309 second(s), 13 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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