使用正则表达式获取匹配文件名称但不获取图像文件

时间:2016-06-16 09:50:05

标签: php regex

文件名列表如下字符串:

ckc8.txt j8hi8h.doc 6vhellors.jpg z2heyqn.txt gmzg.gif

我可以使用([\w.]*(hello|hi|hey)[\w.]*)来获取包含hellohihey的文件名,结果为:

j8hi8h.doc 6vhellors.jpg z2heyqn.txt

如果type是image(仅使用正则表达式),如何排除它?结果如下:

j8hi8h.doc z2heyqn.txt

更新

我尝试了一种最佳方式(\w+(hello|hi|hey)\w+\.(?!jpg|gif)\w+)

3 个答案:

答案 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]+)

https://gum.co/phpliveregex