簡體   English   中英

如何在Perl中提取此文件名的部分內容?

[英]How can I extract parts of this filename in Perl?

在包含Changeset列的Excel工作表中,我得到的變更集如下:

C:\ccviews\hgdasdff-9302\dfcsz\ahgrt\kjhssl\ASGHLS@@\main\ajsdkljlat\hahdasdhfk\1\test.txt\sub\hsdaklfl\3

我需要在Perl腳本中使用split函數,這樣就會有兩個輸出(輸入為上面的字符串)

  • @@之前的部分(例如 - 這里C:\\ccviews\\hgdasdff-9302\\dfcsz\\ahgrt\\kjhssl\\ASGHLS
  • 字符串的最后一個字符(例如 - 這里3)

對於常規拆分來說這聽起來太復雜了,你需要像這樣的普通正則表達式:

my ($first, $second) = / ^ (.+?) @@ .* (.) $ /x;

來自Mark Dominus的正則表達精通

蘭德爾的規則

當你知道要保留什么時,使用捕獲或m//g

當你知道要扔掉什么時使用split

蘭德爾施瓦茨

你知道你想要保留什么,所以在Leon Timmermans的回答中使用m//g

我認為這是你想要的,還是你需要一個聲明?

 my ($before, $after) = split '@@', $input;
 my $last_char = substr($after, -1, 1);

已添加兩個答案,您可以僅使用拆分功能嘗試以下操作:

$s = 'C:\ccviews\hgdasdff-9302\dfcsz\ahgrt\kjhssl\ASGHLS@@\main\ajsdkljlat\hahdasdhfk\1\test.txt\sub\hsdaklfl\3';

@temp = split/@@/,$s;
$part1 = $temp[0]; # C:\ccviews\hgdasdff-9302\dfcsz\ahgrt\kjhssl\ASGHLS

@temp = split//,$s;
$part2 = $temp[-1]; # 3

暫無
暫無

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

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