[英]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
) 對於常規拆分來說這聽起來太復雜了,你需要像這樣的普通正則表達式:
my ($first, $second) = / ^ (.+?) @@ .* (.) $ /x;
來自Mark Dominus的正則表達精通 :
蘭德爾的規則
- Randal Schwartz( Learning Perl的作者[以及Stack Overflow用戶 ])說:
當你知道要保留什么時,使用捕獲或
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.