第二次冒号后删除文本

时间:2017-09-14 08:03:37

标签: r regex regex-group

我需要在第二次冒号后删除所有内容。我有几种日期格式,需要使用相同的算法进行清理。

a <- "2016-12-31T18:31:34Z"
b <- "2016-12-31T18:31Z"

我试图匹配两个冒号组,但我似乎无法找到如何删除第二个匹配组。

sub("(:.*){2}", "", "2016-12-31T18:31:34Z")

3 个答案:

答案 0 :(得分:2)

您可以使用的正则表达式:(:[^:]+):.*

您可以查看:regex101并使用

sub("(:[^:]+):.*", "\\1", "2016-12-31T18:31:34Z")
[1] "2016-12-31T18:31"
sub("(:[^:]+):.*", "\\1", "2016-12-31T18:31Z")
[1] "2016-12-31T18:31Z"

答案 1 :(得分:0)

使用它作为制作部分时间戳验证器与仅针对任何尾随秒的机会:

Add-AzureAccount

$websitesName = @('WebAppName1','WebAppName2') # website name
foreach ($name in $websitesName)
{
  Publish-AzureWebsiteProject -Name $name -Package  'C:\Tom\netcoreApp.zip'  # package
}

这样,你就会捕获错误的时间戳字符串。

答案 2 :(得分:0)

假设你有一个向量:

date <- c("2016-12-31T18:31:34Z", "2016-12-31T18:31Z", "2017-12-31T18:31Z")

然后你可以用&#34;分开它:&#34;并且只采用前两个元素来删除其余部分:

out = sapply(date, function(x) paste(strsplit(x, ":")[[1]][1:2], collapse = ':'))