簡體   English   中英

Perl正則表達式使用花括號提取匹配項

[英]Perl regex extracting a match using braces

我測試了以下代碼

#! /usr/bin/perl 

use strict;
use English;

#this code extracts the current scripts filename 
#by removing the path from the filepath

my $Script_Name = $PROGRAM_NAME;

${Script_Name} =~ s/^.*\\//; #windows path

#${Script_Name} =~ s/^.*\///; #Unix based path

print $Script_Name;

而且我不明白為什么這些花括號在不使用/ r修飾符的情況下提取匹配項。 誰能解釋為什么以及如何運作,或者向我介紹一些文檔?

你有點困惑!

括號沒有區別。 ${Script_Name}$Script_Name相同。

您的代碼首先將腳本文件的整個路徑從$PROGRAM_NAME $Script_Name$Script_Name

然后替換操作將刪除直到最后一個反斜杠(包括最后一個反斜杠)的所有內容,僅保留文件名。

如果您想修改一個字符串並將修改的結果放入另一個字符串,則將使用/r修飾符,因此您可以一步編寫代碼,如下所示:

$Script_Name = $PROGRAM_NAME=~ s/^.*\\//r

暫無
暫無

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

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