簡體   English   中英

需要特定的Perl正則表達式

[英]Specific Perl Regular Expression Needed

有一個perl腳本,需要處理給定目錄中某種類型的所有文件。 文件應以.jup結尾,並且文件名中不應包含單詞“ TEMP_”。 IE瀏覽器應該允許更正.jup,但不允許TEMP_corrected.jup。

嘗試了先行,但顯然模式不正確:

/(?!TEMP_).*\.jup$/

但是,這將返回整個目錄內容,包括具有任何擴展名的文件和包含TEMP_的文件,例如文件TEMP_corrected.jup。

您想要的正則表達式為:

/^((?!TEMP_).)*\.jup$/

主要區別在於您的正則表達式未錨定在字符串的開頭,因此它匹配任何滿足您條件的子字符串-因此在TEMP_corrected.jup的示例中, corrected.jupEMP_corrected.jup子字符串都匹配。

(另一個區別是,將()放在lookahead和.確保在字符串的任何位置都不允許使用TEMP_,而不是在開始處不允許。不確定是否對您很重要!)

如果您獲取的文件不是.jup文件,那么還有另一個問題-您的表達式只能匹配.jup文件。 您可以使用以下方法測試您的表情:

perl -ne 'if(/^((?!TEMP_).)*\.jup$/) {print;}'

然后輸入字符串:如果匹配,則perl將回顯它們,如果不匹配,則不回顯。 例如:

$ perl -ne 'if(/^((?!TEMP_).)*\.jup$/) {print;}'
foo
foo.jup
foo.jup              <-- perl printed this because 'foo.jup' matched
TEMP_foo.jup

暫無
暫無

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

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