2016-08-08 20 views
2

に文字列を引きますか?結果としてこの結果を受け取るは、私は、このような文字列を持っているR

>phrase_new[1] 
"this_is.//the_first?" 
>phrase_new[2] 
    "the_second" 

私はこれを試しても動作しません。これにはどんな考えがありますか?

phrase_new <- sub("[:?:]", "", phrase) 

答えて

3

あなたは文字で、それを分割したい場合は、より良い使用strsplit:我々はsubが必要な場合は

> strsplit(phrase, "?", fixed = TRUE) 
[[1]] 
[1] "this_is.//the_first" "the_second" 
+1

が見える二重の角括弧を使用する必要があります、perl = TRUE) 'それを行うことができます。 –

2

は、我々はグループ((...))として?までの文字をキャプチャすることができますし、中そのグループには逆参照(\\1)を提供します。第二のサブストリングのために

sub("(.*\\?).*", "\\1", phrase) 
#[1] "this_is.//the_first?" 

、我々は?まで、一つ以上の文字(.*)と一致し、""と交換してください。

sub(".*\\?", "", phrase) 
#[1] "the_second" 
1

@のm0nhawkが示唆したように、strsplitは、文字列を破るために素晴らしいです。しかし、要素を抽出するためにあなたの要件のために、あなたはOPは `?`、ので、多分 `strsplit(句を、 "(?<= \\?)" しておきたいよう

phrase <- "this_is.//the_first?the_second" 
phrase_new <- strsplit(phrase,split = '?',fixed = T)[[1]] 
phrase_new[1] 
phrase_new[2] 
関連する問題