如何使用正则表达式从字符串中移除UTC DateTime?
解决字符串中剥离UTC DateTime值的问题
原正则失效原因
你使用的正则表达式仅匹配带时区偏移(如+0000)的UTC时间格式,但你的示例字符串是带毫秒、无时区偏移的格式,两者不匹配,因此正则无法生效。
适配多种UTC格式的正则方案
针对常见的UTC DateTime格式(带/不带毫秒、带/不带时区偏移),可以使用以下正则表达式匹配并移除目标内容:
utctime = Regex.Replace(utctime, @"\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:[+-]\d{4}|Z)?", "");
正则规则说明
\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}:匹配基础UTC时间结构(如1901-01-01T01:01:01)(?:\.\d+)?:可选匹配毫秒部分(如.7730000),(?:...)为非捕获组,?表示该部分可出现0或1次(?:[+-]\d{4}|Z)?:可选匹配时区标识,支持+0000、-0800或Z(UTC标准符号),同样为可选匹配
测试示例
针对你的示例字符串:
string utctime = "1901-01-01T01:01:01.7730000"; utctime = Regex.Replace(utctime, @"\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:[+-]\d{4}|Z)?", ""); // 处理后utctime为空字符串,符合预期
如果原字符串不含UTC时间,正则替换后内容保持不变,无需额外判断逻辑。
内容的提问来源于stack exchange,提问作者Rusty Nail
相关产品推荐
相关产品推荐

