簡體   English   中英

正則表達式忽略文件擴展名

[英]Regular expressions ignoring a file extension

我需要一些正則表達式幫助。 我有以下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

謝謝

這會起作用

(?!.*\.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) 

這取決於您希望解決方案精確的程度。 如果您只有phdtxt擴展名,則可以使用

/heapdump.*\.(phd|txt)$/

這意味着: 一個以heapdump開頭的字符串,然后是任何東西,然后是一個點,然后是phd或txt,該行的末尾

或者您可以簡單地否定以點gz結尾的字符串

/.*\.gz$/

一個不需要使用正則表達式的選項是將句點( . )上的文件名拆分為一個數組,然后檢查數組的最后一個元素是否包含擴展名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");
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM