我有一個文件,可以被命名爲wh-201310301615.tar.gz
,但它將始終有-201310301615.tar.gz
部分。我想查找該字符串是否在文件名中,並且只能得到數字(因此-
和.tar.gz
mus會出現)。目前我使用下一個模式來找到它:從正則表達式中的文件名解析日期
-\d+\.tar\.gz
但我敢肯定有一個更好的方式來做到這一點,並獲得唯一的數字(目前我有修剪的字符串)。有什麼建議麼?
編輯:我使用python,因此它是引擎。
我有一個文件,可以被命名爲wh-201310301615.tar.gz
,但它將始終有-201310301615.tar.gz
部分。我想查找該字符串是否在文件名中,並且只能得到數字(因此-
和.tar.gz
mus會出現)。目前我使用下一個模式來找到它:從正則表達式中的文件名解析日期
-\d+\.tar\.gz
但我敢肯定有一個更好的方式來做到這一點,並獲得唯一的數字(目前我有修剪的字符串)。有什麼建議麼?
編輯:我使用python,因此它是引擎。
我不完全確定你使用的是什麼正則表達式引擎,但假設我已經理解了你的問題,這應該在任何支持lookarounds的工作。
(?![^-]+-)\d+(?=\.tar\.gz)
您的解決方案也很好,但後視部分包含一個冗餘檢查(恕我直言)。 –
您可以用查找和一個小腳本做到這一點。
unix> ls
wh-201310301615.tar.gz
wh-201310301616.tar.gz
unix> find . -name "wh-*.tar.gz" -exec find_it {} \;
201310301615
201310301616
unix> cat find_it
#!/bin/sh
echo $1 | cut -c 6-17
對不起,這是行不通的,因爲我可以改變。我只需要一個腳本/命令。 –
哦,好的。用'??'代替'wh'會做到這一點,但我看到你已經有一些工作。 –
是的,你建議如何將regexp放入find命令中,而不是如何形成實際的正則表達式。這主要是爲什麼它不起作用。 ;)不過謝謝。 –
您使用哪種語言/風味?您需要查看斷言 – HamZa
@DenysS。你在使用unix工具進行解析。 – anubhava