我需要一些正则表达式的帮助。我有以下4个文件名
heapdump.20160406.214053.18914.0013.phd heapdump.20160406.214053.18914.0013.phd.gz javacore.20160406.214053.18914.0002.txt javacore.20160406.214053.18914.0002.txt.gz
基本上我需要的是我的正则表达式忽略其末尾带有.gz的文件。我尝试了以下但它似乎不起作用。
/heapdump.*.phd|javacore.*.txt/i
/heapdump*.phd|javacore*.txt/i
/heapdump.\d+.\d+.\d+.\d+.phd|javacore.\d+.\d+.\d+.\d+.txt/i
由于
答案 0 :(得分:3)
这将有效
(?!.*\.gz$)(^.*$)
<强> Regex Demo 强>
JS代码
var re = /(?!.*\.gz$)(^.*$)/gm;
var str = 'heapdump.20160406.214053.18914.0013.phd\nheapdump.20160406.214053.18914.0013.phd.gz\njavacore.20160406.214053.18914.0002.txt\njavacore.20160406.214053.18914.0002.txt.gz';
var result = str.match(re);
document.writeln(result)
&#13;
答案 1 :(得分:0)
这取决于您希望解决方案的准确程度。如果您只有phd
和txt
个扩展程序,则可以使用
/heapdump.*\.(phd|txt)$/
这意味着:以heapdump开头的字符串,后跟任何内容,然后是点,然后是phd或txt,行尾
或者你可以简单地否定以dot gz结尾的字符串
/.*\.gz$/
答案 2 :(得分:0)
一个不需要使用正则表达式的选项是将句点(.
)上的文件名拆分为数组,然后检查数组的最后一个元素是否包含扩展名gz
:
var filename = "heapdump.20160406.214053.18914.0013.phd.gz";
var parts = filename.split(".");
if (parts[parts.length - 1] == 'gz') {
alert("ignore this file");
}
else {
alert("pay attention to this file");
}