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

[文本处理] 正则表达式搜索包含中文的行

[复制链接]
发表于 2017-7-27 23:10:41 | 显示全部楼层 |阅读模式
本帖最后由 freesoft00 于 2017-7-27 23:11 编辑

不知道这几个正则表达式如何写?
1、纯中文的行
2、包含中文的行
3、纯英文的行
4、包含英文和数字的行
5、除了英文和数字还包含其它字符的行(包括有中文,也包括其它不是中文的符号),例如下面几行内容
&L"沁Ф¨"
"<鼕n"
L"粒粒粒林粒溺ú"


本身是使用文本处理工具搜索的,并不是批处理的问题,主要是这几个正则的写法不会。
谢谢
发表于 2017-7-28 00:24:34 | 显示全部楼层
纯中文的行
^[一-龥]+$

^[\u4E00-\u9FA5]+$

包含中文的行
^.*[一-龥].*$

^.*[\u4E00-\u9FA5].*$

纯英文的行
^[a-zA-Z]+$

包含英文和数字的行
^.*[a-zA-Z0-9].*$

不包含英文和数字,但是包含其它任意字符的行
^[^a-zA-Z0-9]+$
  1. //&cls&(type 测试.txt)|cscript -nologo -e:jscript "%~f0"&pause&exit
  2. WSH.echo(WSH.StdIn.ReadAll().match(/^[\u4E00-\u9FA5]+$/mg).join('\r\n'));
  3. //提取全中文的行,匹配多个结果
复制代码
^行首
$行尾
[^\^]0{4,}非行首的字符+右边必须有4个0以上
[^一-龥]{2,5}$行尾以:非中文的任意2到5个字符结束
/g匹配所有可能
/i不区分大小写
/m匹配多行

评分

参与人数 2技术 +2 收起 理由
freesoft00 + 1 +1
a2002 + 1 顶一个

查看全部评分

 楼主| 发表于 2017-7-28 10:18:21 | 显示全部楼层
本帖最后由 freesoft00 于 2017-7-28 10:20 编辑

回复 2# 3518228042


    多谢了兄弟,我测试一下。
最后一个理解有出入:
不包含英文和数字,但是包含其它任意字符的行
我的原意是不仅包含数字英文,还包含其它任意字符的行。这样是不是就包括所有了,那么可以更改为不仅包含数字英文,还包含中文。(回复完帖子又想了想,这样是不是和第二条规则一样了,包含中文的行)
 楼主| 发表于 2017-7-28 11:21:19 | 显示全部楼层
包含英文和数字的行
^.*[a-zA-Z0-9].*$
------------------------
这个带有中文等字符的行也包括在内了。我想要的结果,行中只有英文和数字。
esi,dword ptr ds:[773A702C]                             "3T:w\rT:w"==L"吳眺名眺"
另外,我的疏忽,这些行内基本上除了数字英文,还有标点,:[]等。
应该是包含英文、数字和标点的行


包含中文的行
^.*[一-龥].*$

^.*[\u4E00-\u9FA5].*$
----------------------------------
第一个可以,第二个不行没有结果


不包含英文和数字,但是包含其它任意字符的行
^[^a-zA-Z0-9]+$
-----------------------------------
这条带有中文、英文、数字的行没有包括在其内。
例如:
dword ptr ss:[ebp-1C],mpr.70F3F4D8                      L"整个网络"
发表于 2017-7-28 11:30:47 | 显示全部楼层
本帖最后由 3518228042 于 2017-7-28 18:58 编辑

网上有正则表达式30分钟入门教程,可以看看
包含中文那个第二个无效的把$去掉看看,我试了我的可以,开多行
最后一行提问的不能有英文和数字,但是你又有英文和数字,自然就被不能匹配。

只有英文和数字的行
^[a-z0-0A-Z]+$
如果有标点,标点也添加到[]里面去,有什么字符就添加什么。不能有什么就添加到[^],比如非0-9[^0-9]

行首任意字符1个以上至行尾结束,表达式后面没有/mg就匹配第一行的内容
^.+$

行首任意字符1个以上到行尾结束,这个会尽可能的匹配更多字符,也就是文本所有内容
^[\S\s]+$
^[\D\d]+$
^[\w\W]+$

大写的A-Z贪婪的匹配方式,会尽可能多匹配,
小写的a-z惰性的匹配方式,尽可能的少匹配,
也就是大写A-Z的任意字符1个以上,右边必须还要有小写a-z的任意字符1个
[A-Z]+[a-z]+?

匹配含中文字符的短句
[^ ,。、“”:;!?…]*中文+[^ ,。、“”:;!?…]*

零宽断言
(?=exp)        匹配exp前面的位置
(?<=exp)        匹配exp后面的位置
(?!exp)        匹配后面跟的不是exp的位置
(?<!exp)        匹配前面不是exp的位置

……是子表达式内容,方式是这样的:
……(?=exp)
(?<=exp)……
……(?!exp)
(?<!exp)……

不能下面这样写,下面都是错误的
(?=A)BC
BC(?<=A)
(?!A)AB
BA(?<!A)

下面是几种组合方式,取中间的子表达式:
(?<=A).+(?=A)     文本内容:ABCBCDCBAABB将匹配BCBCDCBA (这个前后都必须有A,就会取两个A中间的内容)
(?<=A).+B(?!A)    文本内容:ABCBCDCBAA将匹配BCB                (这个前面必须有A,后面不能是A,既然不能是A,其他任意字符都可以,然后取中间内容)
(?<!A)B.*(?=A)    文本内容:ABCBCDCBAABB将匹配BCDCBA      (这个前面不能是A的字符,那么其他任意字符都可以,后面必须是A的字符,然后取中间内容)
(?<!A)B.*B(?!A)   文本内容:ABBCBBA将匹配AB后面的BCB          (这个前后不能是A的字符,其他任意字符都可以,然后取中间内容,不能是A的B,那么前面可以是B的B、C的B等字符,后面也一样,不是A,标点符号等等都可以)

评分

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

查看全部评分

发表于 2017-7-28 23:08:38 | 显示全部楼层
bat可以写正则!?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-17 23:43 , Processed in 0.021749 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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