我正在尋找一個必須以某個前綴開頭的文件路徑的正則表達式。在這種情況下,它應該以'/ tank/home /'開頭。我也想確保它不包含'/ ..' - 不跳到父目錄。不允許父目錄的文件路徑的正則表達式
我花了一段時間擺弄,沒有提出任何正確的東西。我決定使用兩個正則表達式,它必須與第一和第二,必須不匹配:
'^/tank/home/'
'/\.\.(/.*)?$'
這是否做什麼我想它呢?有更容易的方法嗎?
這是在一個bash腳本中,它的價值。
我正在尋找一個必須以某個前綴開頭的文件路徑的正則表達式。在這種情況下,它應該以'/ tank/home /'開頭。我也想確保它不包含'/ ..' - 不跳到父目錄。不允許父目錄的文件路徑的正則表達式
我花了一段時間擺弄,沒有提出任何正確的東西。我決定使用兩個正則表達式,它必須與第一和第二,必須不匹配:
'^/tank/home/'
'/\.\.(/.*)?$'
這是否做什麼我想它呢?有更容易的方法嗎?
這是在一個bash腳本中,它的價值。
您還可以擴大DAV的正則表達式包含一個額外的結尾的斜線:
^(?!.*/\.\./.*)/tank/home.*$
但是......一個更好的選擇是,以確保道路的結果是什麼,下/罐/家開始:
FILEPATH=$(readlink -f $YOURFILE)
[[ $FILEPATH =~ ^/tank/home/ ]] && echo "starts with /tank/home/"
啊哈。我想知道是否有這樣做。 – alberge 2009-08-07 00:44:59
你可以使用負回顧後也:
/罐/家庭/([^ /] |(</..!)/)+ $
'^/tank/home(?!.*/\.\.(/|$))/'
比賽/箱/家用/富..但不是/ tank/home/..或/tank/home/foo/../bar
實際上'[^ \。\。]'不會與_any_路徑中的一個點匹配,因爲'[[ ]'是一個字符組。 – 2009-08-07 00:28:25
是的,我發現後,發佈。編輯以反映這一點。 – alberge 2009-08-07 00:33:47