2017-09-14 16 views
0

2番目のコロンの後にすべてを削除する必要があります。私は同じアルゴリズムを使用してきれいにする必要があるいくつかの日付形式を持っています。2番目のコロンの後にテキストを削除します

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

私は2つのコロングループに一致しようとしましたが、私は2番目の一致グループを削除する方法を見つけるように見えることはできません。

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

答えて

1

あなたが使用できる正規表現:regex101をして

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

ちょうどいずれかをターゲットに対部分のタイムスタンプのバリデータを作成するための機会としてそれを使用してのように使用します。あなたがチェックすることができ(:[^:]+):.*

を末尾の秒:

remove_seconds <- function(x) { 
    require(stringi) 
    x <- stri_trim_both(x) 
    x <- stri_match_all_regex(x, "([[:digit:]]{4}-[[:digit:]]{2}-[[:digit:]]{2}T[[:digit:]]{2}:[[:digit:]]{2})")[[1]] 
    if (any(is.na(x))) return(NA) 
    sprintf("%sZ", x[,2]) 
} 

タイムスタンプ文字列を誤って捕捉する。

0

みましょうあなたは、ベクトルを持っていると言う:

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

次にあなたがでそれを分割することができ、「:」、残りを落とすだけで最初の2つの要素取る:

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

おかげで、私は、このオプションを検討していましたしかし、コードを正規表現でもっときれいにしたいと思っていました。 –

関連する問題