2012-03-08 51 views
1

我正在建立一個正則表達式,該語句允許我用下劃線(_)替換文件名中的句點(。)。正則表達式 - 如何用下劃線替換文件名中的句點

例子:與filename_doc

我已經在快報左右一齣戲,並已制定了,這將是類似\ W {3,4)取代filename.doc - 回暖。 3或4個字符的擴展例如doc,docx,xl​​s,xlsx等

但我無法弄清楚如何只替換期限並保留擴展。

+3

你爲什麼要用這個正則表達式?幾乎每種語言都支持簡單的字符/字符串替換 - 就像myString.replace('。','_'); – scibuff 2012-03-08 13:45:16

+0

你想只取代最後一個點或全部? – Toto 2012-03-08 13:50:01

+0

我通常只會做你所描述的內容,但由於我將字符串傳遞給另一個系統的一些非常奇怪的限制,我只想替換文件名中包含的句點。 – 2012-03-08 13:51:36

回答

4

你必須逃避.標誌。試着用以下的正則表達式:

\.(\w{3,4})$ 

,取而代之的是:

_$1 

$1包含()

+0

我確實有過這段時間,但它似乎已從我的帖子中刪除?但謝謝你的回答,我錯過了1美元。 – 2012-03-08 13:56:08

0

匹配的字符串只替換最後一個點:

perl: $str =~ s/\.([^.]+)$/_$1/ 

php: $str = preg_replace('/\.([^.]+)$/', "_$1", $str); 

全部替換點:

perl: $str =~ s/\./_/g; 

php: $str = preg_replace('/\./', '_', $str); 
相關問題