Regex 正则表达式删除十进制值

Regex 正则表达式删除十进制值,regex,Regex,给出以下ISO 8601格式的时间戳: 2012-04-21T01:56:00.581550 什么正则表达式会删除小数点和毫秒精度?换句话说,一个适用于上述内容并返回以下内容的正则表达式: 2012-04-21T01:56:00 这可能非常简单,但由于不太熟悉regex,我不确定如何解决这个问题。提前感谢您的帮助。如果您必须使用regex,您可以使用“[.][0-9]+$”并将其替换为空字符串”。 更容易找到尾随的。,并在其索引处切掉字符串。在C#中,这将是 myStr = myStr.Su

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

2012-04-21T01:56:00.581550
什么正则表达式会删除小数点和毫秒精度?换句话说,一个适用于上述内容并返回以下内容的正则表达式:

2012-04-21T01:56:00

这可能非常简单,但由于不太熟悉regex,我不确定如何解决这个问题。提前感谢您的帮助。

如果您必须使用regex,您可以使用
“[.][0-9]+$”
并将其替换为空字符串
。 更容易找到尾随的
,并在其索引处切掉字符串。在C#中,这将是

myStr = myStr.Substring(0, myStr.LastIndexOf('.')-1);

如果必须使用正则表达式,可以使用
“[.][0-9]+$”
并将其替换为空字符串
。 更容易找到尾随的
,并在其索引处切掉字符串。在C#中,这将是

myStr = myStr.Substring(0, myStr.LastIndexOf('.')-1);
看起来你可以假设只有一个点。上面的sed表达式找到一个点,然后替换该点之后的所有内容,直到换行符中没有任何内容

不带sed:将
\..*$
替换为空字符串
“”

\。
是文字句点(必须转义它,因为
表示任何字符)

*
表示任何和所有字符

$
表示行尾

看起来你可以假设只有一个点。上面的sed表达式找到一个点,然后替换该点之后的所有内容,直到换行符中没有任何内容

不带sed:将
\..*$
替换为空字符串
“”

\。
是文字句点(必须转义它,因为
表示任何字符)

*
表示任何和所有字符


$
表示行尾

此regex
^[\w\-:]+
将只匹配到该期间,并且不包括该期间。您可以使用它来查找所需时间戳的部分

  • ^
    是字符串的开头
  • \w
    是任何“单词”
  • \-
    包括连字符
  • 包括冒号
  • 放置在
    []
    中的这些字符表示仅匹配这些字符
  • +
    表示匹配这些字符的一个或多个实例

由于不包括句点(
),正则表达式将在到达该句点时停止匹配。

此正则表达式
^[\w\-:]+
将只匹配到该句点并将其排除。您可以使用它来查找所需时间戳的部分

  • ^
    是字符串的开头
  • \w
    是任何“单词”
  • \-
    包括连字符
  • 包括冒号
  • 放置在
    []
    中的这些字符表示仅匹配这些字符
  • +
    表示匹配这些字符的一个或多个实例

由于不包括句点(
),因此当到达该句点时,正则表达式将停止匹配。

为什么要使用正则表达式? 使用字符串操作

在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'

为什么要使用正则表达式? 使用字符串操作

在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'
代码:

测试:

输出:

代码:

测试:

输出:


我同意regex在这方面做得过火,甚至可能会出错。谢谢,有一种方法可以根据我使用的语言中的分隔符拆分字符串,因此这似乎是更好的方法。我同意regex在这方面做得过火,甚至可能会出错。谢谢,有一种方法可以根据我使用的语言中的分隔符拆分字符串,因此这似乎是更好的方法。
2012-04-21T01:56:00