[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

本人遇到一个需求,如何用正则表达式在某个位置排除字符串而不是单个字符。
如:请用一个正则表达式匹配出1.txt中具有如下特征的行。
2009-10-2 16:23:52 bat-batman

其中第一列为日期,月份和日期可能为1位或2位,第二列为时间,第三列为名称,关键就在这里,不能为“bat-weichenxiehou”,其他都可以。
要求是只能用一个正则匹配该行,管道啊正则嵌套什么的不考虑,零宽断言好像可以,但是sed和gawk好像不支持,请问各位有什么解决办法吗?具体问题我已经解决,只是想将这个问题泛化,像sed和awk这种工具如何排除字符串?
看得多说得多,远比不上写得多。

回复 3# Demon


    这位大神能否给个不晦涩的词学习一下啊

TOP

回复 2# tmplinshi
多谢,晚上回去试试这两个工具。
看得多说得多,远比不上写得多。

TOP

第一次听说零宽断言这个词,不得不佩服翻译人员水平之高,居然能想出那么晦涩的词来表达Lookahead和Lookbehind

TOP

本帖最后由 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)"

TOP

返回列表