回答
您應該使用[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. Perl /正則表達式日期格式轉換
- 3. 將SimpleDateFormat日期格式轉換爲正則表達式
- 4. 正則表達式的日期格式
- 5. 正則表達式日期格式
- 6. 日期格式的正則表達式
- 7. 正則表達式日期格式?
- 8. jquery正則表達式日期格式
- 9. 正則表達式 - 日期格式
- 10. 轉換,從數字格式的日期DDMMYY格式的Android
- 11. 日期正則表達式替換
- 12. Python正則表達式替換日期
- 13. 正則表達式日期
- 14. 正則表達式來驗證日期和限制日期範圍的格式DDMMYY
- 15. 正則表達式來轉換短日期模式
- 16. sql日期格式patindex正則表達式替換召回
- 17. 日期格式正則表達式匹配日期分隔符
- 18. 正則表達式來表達CCYYMMDD格式日期
- 19. 正則表達式轉換
- 20. 正則表達式查找/記事本替換++(日期轉換)
- 21. Python的轉換DDMMYY格式的有效日期
- 22. 將SAS中的單詞日期轉換爲ddmmyy格式
- 23. 經常用於驗證日期格式表達DDMMYY
- 24. 將SQL格式轉換爲java格式的正則表達式
- 25. 將JavaScript正則表達式轉換爲PHP正則表達式?
- 26. 轉換PHP正則表達式C#正則表達式
- 27. 轉換C#正則表達式的JavaScript正則表達式
- 28. 轉換PHP正則表達式的JavaScript正則表達式
- 29. 將Java正則表達式轉換爲PHP正則表達式
- 30. 將Perl正則表達式轉換爲SQL正則表達式
不是說不能做(雖然我如果沒有perl eval正則表達式語法,就不能馬上看到),但它肯定不會是一個漂亮的正則表達式。我認爲有更好的方法來寫這個替代品。 –
請使用日期函數imo。 –
因爲正則表達式無法將「FEB」翻譯爲「02」,所以沒有正則表達式。正則表達式是錯誤的方法。 – Bohemian