回答
您應該使用[DateTime]::ParseExact()
,因爲正則表達式需要12個不同的替換操作,或者使用MatchEvalutor
來轉換月份。
例使用正則表達式MatchEvaluator
:
$MatchEvaluator = {
param($match)
#Could have used a switch-statement too..
$month = [datetime]::ParseExact($match.Groups[2].Value,"MMM",$null).Month
"{0:00}/{1:00}/{2:00}" -f $match.Groups[1].Value, $month, $match.Groups[3].Value
}
[regex]::Replace("25-FEB-16","(\d+)-(\w+)-(\d+)", $MatchEvaluator)
25/02/16
望着那,我要說的是,只用ParseExact()
是一個更好的解決方案:
try {
[datetime]::ParseExact("25-FEB-16","dd-MMM-yy", $null).ToString("dd/MM/yy", [cultureinfo]::InvariantCulture)
} catch {
#Invalid date-format
}
25/02/16
不確定爲什麼您將反斜槓放在格式字符串的斜線前面? –
'/'是一個日期分隔符,所以它會輸出文化的分隔符,這對我來說最後是'25.02.16'。使用InvariantCulture也可以修復它。 –
謝謝................. – user664481
這裏更好的解決方案是使用日期分析和格式化函數,而不是基於正則表達式的字符串替換。
[DateTime]::ParseExact('25-FEB-16', 'dd-MMM-yy', $null).ToString('dd/MM/yy', [System.Globalization.CultureInfo]::InvariantCulture)
# => 25/02/16
如果您在系統中運行日期與另一種語言的月份名稱一起運行,這也會得到您內置的語言環境敏感性。但使用ParseExact
和InvariantCulture
選項意味着語言環境敏感性不會混淆您指定的格式。
- 1. 的Javascript轉換Unix日期DDMMYY格式
- 2. jquery正則表達式日期格式
- 3. 轉換,從數字格式的日期DDMMYY格式的Android
- 4. Python正則表達式替換日期
- 5. 正則表達式日期
- 6. sql日期格式patindex正則表達式替換召回
- 7. 日期格式正則表達式匹配日期分隔符
- 8. 正則表達式來表達CCYYMMDD格式日期
- 9. 正則表達式轉換
- 10. 正則表達式查找/記事本替換++(日期轉換)
- 11. Python的轉換DDMMYY格式的有效日期
- 12. 將SQL格式轉換爲java格式的正則表達式
- 13. 將C#正則表達式轉換爲JavaScript正則表達式
- 14. 將Perl正則表達式轉換爲SQL正則表達式
- 15. 將Perl正則表達式轉換爲Python正則表達式
- 16. 日誌格式的正則表達式
- 17. 日期時間轉換正則表達式C#
- 18. 使用正則表達式在Excel中轉換日期
- 19. 含空格的日期和日期的正則表達式
- 20. 正則表達式來轉換時間格式替換。與:
- 21. 正則表達式格式
- 22. 正則表達式日期格式m/dd/yy-m/dd/yy
- 23. Javascript正則表達式日期格式dd/mm/yy
- 24. 這個日期格式的正則表達式?
- 25. 如何將此日期格式與正則表達式匹配?
- 26. Python:使用正則表達式更改日期格式
- 27. 使用正則表達式驗證日期格式
- 28. 以日期格式發送正則表達式
- 29. 日期格式dd \ mm \ yyyy的正則表達式是什麼?
- 30. 正則表達式匹配YYYY-MM-DD格式的日期
不是說不能做(雖然我如果沒有perl eval正則表達式語法,就不能馬上看到),但它肯定不會是一個漂亮的正則表達式。我認爲有更好的方法來寫這個替代品。 –
請使用日期函數imo。 –
因爲正則表達式無法將「FEB」翻譯爲「02」,所以沒有正則表達式。正則表達式是錯誤的方法。 – Bohemian