簡體   English   中英

Perl:正則表達式匹配

[英]Perl: Regular Expression Matching

假設我有一個固定變量:

$f_variable = "hello.exe";

並且我想逐行搜索文件並找到包含該單詞的路徑,例如:

/Desktop/Downloads/hello.exe

要么

/Desktop/Downloads/hello_qwdqd.exe

可以說文件擴展名可以是exeex

我寫了這行代碼:

 if ($line =~ m/(\/$f_variable.*\.[exe]+)

顯然,這是行不通的,因為上面的代碼行實際上是:

if ($line =~ m/(\/hello.exe.*\.[exe]+)

不會匹配任何東西。

所以我的問題是,在更改$f_variable值的情況下,應該進行哪些更改才能正確匹配並捕獲整個路徑?

您寫的甚至不是完整的正則表達式。 盡管您尚未清楚說明文件中的內容(行僅是路徑嗎?),但是您可能想要以下內容:

my $pattern = $f_variable;
$pattern =~ s/\.exe?$//;
if ($line =~ m{(/\S*\Q$pattern\E[^/]*\.exe?)}) {
  print "$1\n";
}

這將刪除文件名.ex.exe后綴以獲取基本名稱,然后匹配包含基本名稱的第一個字符串,包括任何以.ex.exe結尾的非空格前導字符和結尾的非空格字符。

暫無
暫無

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

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