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

[问题求助] 如何用一个正则表达式在特定位置排除字符串

[复制链接]
发表于 2012-11-22 12:57:33 | 显示全部楼层 |阅读模式
本人遇到一个需求,如何用正则表达式在某个位置排除字符串而不是单个字符。
如:请用一个正则表达式匹配出1.txt中具有如下特征的行。
2009-10-2 16:23:52 bat-batman

其中第一列为日期,月份和日期可能为1位或2位,第二列为时间,第三列为名称,关键就在这里,不能为“bat-weichenxiehou”,其他都可以。
要求是只能用一个正则匹配该行,管道啊正则嵌套什么的不考虑,零宽断言好像可以,但是sed和gawk好像不支持,请问各位有什么解决办法吗?具体问题我已经解决,只是想将这个问题泛化,像sed和awk这种工具如何排除字符串?
发表于 2012-11-22 13:22:41 | 显示全部楼层
本帖最后由 tmplinshi 于 2012-11-22 13:31 编辑

onigsed - 支持 Oniguruma (ver. 2.5.0) 和 Perl 5 正则表达式的 sed (4.1.5)
http://bathome.net/thread-20202-1-1.html

onigsed -R "/[0-9]{4}(-[0-9]{1,2}){2} ([0-9]{2}:){2}[0-9]{2} (?!bat-weichenxiehou)/!d" a.txt
________________________________________________________________________________________

http://baiy.cn/utils/f/index.htm

f a.txt -r:"***:[0-9]{4}(-[0-9]{1,2}){2} ([0-9]{2}:){2}[0-9]{2} (?!bat-weichenxiehou)"
发表于 2012-11-22 13:44:58 | 显示全部楼层
第一次听说零宽断言这个词,不得不佩服翻译人员水平之高,居然能想出那么晦涩的词来表达Lookahead和Lookbehind
 楼主| 发表于 2012-11-22 13:54:44 | 显示全部楼层
回复 2# tmplinshi
多谢,晚上回去试试这两个工具。
发表于 2012-11-22 14:50:19 | 显示全部楼层
回复 3# Demon


    这位大神能否给个不晦涩的词学习一下啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-17 00:47 , Processed in 0.016737 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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