我需要一些关于正则表达式的帮助。我有以下4个文件名
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谢谢
发布于 2016-04-18 14:41:42
这取决于你对解决方案的要求有多高。如果您只有phd和txt扩展,这将有效。
/heapdump.*\.(phd|txt)$/这意味着:以堆转储开头的字符串,然后是点,然后是phd或txt,行尾。
或者,您可以简单地否定以点gz结尾的字符串。
/.*\.gz$/发布于 2016-04-18 14:41:55
这会起作用的
(?!.*\.gz$)(^.*$)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)
发布于 2016-04-18 14:42:23
一个不需要使用正则表达式的选项是将文件名在句点上(.)拆分为一个数组,然后检查数组的最后一个元素是否包含扩展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");
}https://stackoverflow.com/questions/36696978
复制相似问题