2017-12-27 17 views
0

文字列のサブセット束にパターンを構築するためにstringrとrebusを使用しようとしています。私が得たいと思っている文字列は共通点があり、それらはすべて同じ桁で始まり、終わりです。データ位置15と22の例は、私がサブセットしたいものを示しています。これらの数字は、(私は、彼らが同じでなければならないという声明を作っていないよということを知って、私はどのように知りません)私は仕事だろうと思ったものです。ここ1〜120Rサブセット文字列stringrとrebus

に変えることができ:

library(stringr) 
library(rebus) 

pattern <- START %R% one_or_more(DGT) %R% one_or_more(ANY_CHAR) %R% one_or_more(DGT) %R% END 

str_subset(example, pattern) 

私が探している正しいパターンは何ですか?それを確実にしなければならないように、開始と終了が全く同じになるためのプラス。

データ:

example <- c("10. - 15. JAN 2017", "COMPETITION ANALYSIS", 
"WOMEN 7.5 KM SPRINT", "CHIEMGAU ARENA", "SAT 14 JAN 2017", "START TIME:", 
"END TIME:", "14:30", "15:47", "Rank Bib Name Nat T", "Loop1 Loop2 Loop3", 
"Result Behind Rank", "Time Behind Rank Time Behind Rank Time Behind Rank", 
"1 43 MAKARAINEN Kaisa FIN 0 20:51.8 0.0 1", "Cumulative Time 7:15.7 0.0 1 14:32.2 0.0 1 20:51.8 0.0 1", 
"Loop Time 7:15.7 0.0 1 7:16.5 0.0 1 6:19.6 0.0 1", "Shooting 0 33.0 +12.0 =41 0 30.0 +8.0 =42 0 1:03.0 +19.0 =48", 
"Range Time 55.5 +11.9 =35 51.9 +7.5 37 1:47.4 +18.5 38", "Course Time 6:14.5 0.0 1 6:19.9 0.0 1 6:19.6 0.0 1 18:54.0 0.0 1", 
"Penalty Time 5.7 4.7 10.4", "2 64 KOUKALOVA Gabriela CZE 0 21:13.8 +22.0 2", 
"Cumulative Time 7:24.6 +8.9 3 14:45.4 +13.2 2 21:13.8 +22.0 2" 
) 

答えて

0

それがrebusするとstringr以下に示すように、あなたが正規表現(正規表現)でgrepを使用する場合があります持っていない場合。それは役に立ちますか?

example[grepl("(^)(\\d+)(.+)(\\d+)($)", example, perl = T)] 
# [1] "1 30 HORCHLER Nadine GER 0 36:11.5 0.0 1" 
# [2] "2 1 DAHLMEIER Laura GER 3 36:14.6 +3.1 2" 

また([1-120])ことによってそれを置き換えることにより、1から120までの数字の指定された範囲に最後にキャプチャグループ(\\d+)を制限することができます。

+0

いくつかの文字列を私の例に合わせて更新すると、問題が発生します。ご覧のとおり、奇妙な日時があります。これも正しいものを拾うので、これと一緒に行くでしょう。 – Viitama

+0

時間パターンを除外するために、最初の数字キャプチャグループの後に空白の '\\ s'を導入することができます(後者では空白ではなく最初の数字にコロンが続きます) )(\\ s)(。+)(\\ d +)($) "' –

関連する問題