文件名列表如下字符串:
ckc8.txt j8hi8h.doc 6vhellors.jpg z2heyqn.txt gmzg.gif
我可以使用([\w.]*(hello|hi|hey)[\w.]*)
来获取包含hello
,hi
和hey
的文件名,结果为:
j8hi8h.doc 6vhellors.jpg z2heyqn.txt
如果type是image(仅使用正则表达式),如何排除它?结果如下:
j8hi8h.doc z2heyqn.txt
更新
我尝试了一种最佳方式(\w+(hello|hi|hey)\w+\.(?!jpg|gif)\w+)
答案 0 :(得分:0)
您可以尝试这样的事情:
([\w.]*(hello|hi|hey)[\w.]*\.(?!gif))
或者只需将文件名添加到正则表达式中,就像@arkascha所说
强制拥有扩展程序:
([\w.]*(hello|hi|hey)[\w.]*\.(?!gif)[\w]+)
答案 1 :(得分:0)
在下面的示例中,我删除了gif或jpg,您只需将“| grep -v newFormatToRemove”添加到我发送给您的内容中:
$ cat myFileName ckc8.txt j8hi8h.doc 6vhellors.jpg z2heyqn.txt gmzg.gif $ sed -e "s/ /\n/g" myFileName | grep -v gif | grep -v jpg | xargs ckc8.txt j8hi8h.doc z2heyqn.txt
答案 2 :(得分:0)
(\w+[hello|hi|hey]\w+\.[doc|txt]+)