回答
您应该使用[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