正则表达式删除十进制值

时间:2012-04-21 00:02:40

标签: regex

给出下面的ISO 8601格式的时间戳:

2012-04-21T01:56:00.581550

正则表达式会删除小数点和毫秒精度?换句话说,适用于上述的正则表达式返回以下内容:

2012-04-21T01:56:00

这可能非常简单,但不熟悉正则表达式我不确定如何处理解决方案。提前感谢您的任何帮助。

5 个答案:

答案 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";

<强> 测试:

http://ideone.com/52hij

<强> 输出:

2012-04-21T01:56:00