[英]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.jup
和EMP_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.