给出下面的ISO 8601格式的时间戳:
2012-04-21T01:56:00.581550
正则表达式会删除小数点和毫秒精度?换句话说,适用于上述的正则表达式返回以下内容:
2012-04-21T01:56:00
这可能非常简单,但不熟悉正则表达式我不确定如何处理解决方案。提前感谢您的任何帮助。
答案 0 :(得分:3)
如果必须使用正则表达式,则可以使用"[.][0-9]+$"
并将其替换为空字符串""
。
找到尾随'.'
更容易,并在其索引处切断字符串。在C#中,那将是
myStr = myStr.Substring(0, myStr.LastIndexOf('.')-1);
答案 1 :(得分:1)
此正则表达式^[\w\-:]+
仅匹配期间并将其排除。您可以使用它来查找所需时间戳的部分。
^
是字符串的开头。\w
是任何“字”。\-
包含连字符。:
包括冒号。[]
中的这些只表示只匹配这些字符。+
表示匹配这些字符的一个或多个实例。由于未包含句点(.
),正则表达式将在到达时停止匹配。
答案 2 :(得分:1)
为什么要使用正则表达式? 使用字符串操作
在python中:
>>> "2012-04-21T01:56:00.581550".split(".")
['2012-04-21T01:56:00', '581550']
>>> "2012-04-21T01:56:00.581550".split(".")[0]
'2012-04-21T01:56:00'
答案 3 :(得分:0)
s/\..*$//
看起来你可以假设只有一个点。上面的sed表达式找到一个点,然后替换该点之后的所有内容,直到没有任何内容的换行符。
没有sed:用空字符串\..*$
""
\.
是字面句点(必须转义它,因为.
表示任何字符)
.*
表示任何和所有字符
$
表示行尾
答案 4 :(得分:0)
<强> 代码: 强>
$_ = '2012-04-21T01:56:00.581550';
s/\.\d*//;
print $_, "\n";
<强> 测试: 强>
<强> 输出: 强>
2012-04-21T01:56:00