我知道正則表達式可以使用,但無法找到正確的表達式。也有任何可用的內置函數嗎?如何匹配unix絕對路徑並使用perl提取它?
回答
考慮:
bmake: stopped in /bb/cc/xx/yy/zz/aa
此正則表達式將拉動路徑:
m%\s(/.*)%
它看起來的空格字符後跟一個斜線跟着什麼。如果你沒有在你的路徑名的空白,那麼你可以使用更嚴格的:
m%\s(/\S*)%
如果你相信你會一直有一個或多個路徑組件的名稱,你可以添加更多限制:
m%\s(/\S+/\S*)%
然後繼續。您對路徑中的有效內容瞭解得越多,您匹配文件名的機會就越大。但是請注意,Unix上的文件名可以包含除/
(因爲它是路徑名的各部分之間的分隔符)和\0
(NUL字節)之外的任何字符。其他一切 - 換行符,製表符,控件等 - 都是公平的遊戲,可能是文件名的一部分。實際上,它們中的大多數通常不存在於文件名中。
請注意,相對路徑名比絕對路徑名更難。
/(.+/)*.*
使用此模式。一開始就有斜線,然後是目錄(可能不是任何),最後是文件名或目錄名(這可能不是太完美)。實際上,這將匹配所有以斜線開頭的東西,但這是可以的,因爲unix中的路徑可以包含除\0
之外的所有內容。
在Perl中,我必須這樣做嗎? $ line =〜m/regex/?? – 2012-02-28 06:37:08
yes.see this http://www.troubleshooters.com/codecorn/littperl/perlreg.htm – shift66 2012-02-28 06:38:17
if($ line =〜/[/](.+[/])*.*/),這是否正確? – 2012-02-28 06:43:12
我建議使用File::Spec核心模塊來代替。如果您只需要檢查給予您的是絕對路徑,請使用file_name_is_absolute()
;如果您需要將相對路徑轉換爲絕對路徑,請使用rel2abs()
,您會看到該模式。 )它更容易和更可讀。
- 1. 如何提取UNIX路徑在Perl
- 2. 用Perl獲取絕對路徑
- 3. 如何相對路徑轉換爲絕對路徑的Unix
- 4. 如何從相對路徑中獲取我的Perl程序的絕對路徑?
- 5. 如何用javascript_include_tag獲取絕對路徑?
- 6. 從絕對路徑中提取相對路徑
- 7. 提取絕對路徑操作
- 8. 如何返回遞歸匹配參數的絕對路徑? (BASH)
- 9. 如何在make中vpath匹配後獲得絕對路徑?
- 10. Eclipse絕對路徑配置
- 11. 如何根據兩個絕對路徑獲取相對路徑?
- 12. 如何獲取gulpfile的絕對路徑?
- 13. 如何獲取圖像絕對路徑?
- 14. 使用絕對路徑,FileNotFoundError
- 15. 如何在絕對地圖方法中提供絕對路徑?
- 16. 如何從使用Perl的路徑中提取文件名?
- 17. 使用絕對路徑提取目錄名awk或者sed
- 18. WIN32_FIND_DATA - 獲取絕對路徑
- 19. 在python中使用絕對的unix路徑
- 20. 如何從HDFS路徑中獲取絕對路徑
- 21. 如何使用FileChooser的路徑獲取圖像的絕對路徑?
- 22. 在makefile中,如何獲取從一個絕對路徑到另一個絕對路徑的相對路徑?
- 23. 在Unix中,如何以絕對路徑名創建文件
- 24. 如何使絕對路徑HTTP在golang
- 25. 網絡路徑使絕對路徑 - asp.net
- 26. 如何使用JavaScript或...獲取文件絕對路徑?
- 27. 如何使用Delphi獲取INI文件的絕對路徑?
- 28. 如何使用tkFileDialog獲取文件的絕對路徑?
- 29. 如何在Android中使用createChooser獲取音頻絕對路徑
- 30. 如何使用Repl Xcode 7?獲取絕對路徑的錯誤
你能更清楚地解釋一下你想要的嗎?究竟你想匹配和提取什麼?你可以給一些你想要匹配的輸入字符串嗎?不匹配,以及你在輸出什麼? – 2012-02-28 06:30:34
不是沒有一些額外的限制,他們不能。現代* nix路徑可以包含除'\ 0'之外的任何字符。意思是,如果你願意,你可以有一條看起來像一個句子的路徑。絕對路徑名是唯一可以實現的功能,它是一個主要的斜線。 – cHao 2012-02-28 06:30:35
「bmake:停在/ bb/cc/xx/yy/zz/aa」。從這裏我只是想提取/ bb/cc/xx/yy/zz/aa – 2012-02-28 06:35:54