最初の「)」を取得して文字列を分割するstrsplitコマンドを作成したいと思います。
例えば:
f("12)34)56")
"12" "34)56"
私は他のいくつかの関連する正規表現SOの質問を読みましたが、私はこれの頭または尾を作ることができないのではないかと思います。助けてくれてありがとう。
strsplit
を使用して最初の一致を取得し、次にregexpr
の逆の結果を取得した場合、regmatches
の場合と同じリストタイプの結果を取得できます。
x <- "12)34)56"
regmatches(x, regexpr(")", x), invert = TRUE)
# [[1]]
# [1] "12" "34)56"
スピードが必要ですか?次に、stringi
関数に移動します。タイミングを参照してください。 here 。
library(stringi)
x <- "12)34)56"
stri_split_fixed(str = x, pattern = ")", n = 2)
文字がどこにあるかを識別してから、その両側に部分文字列を付ける方が安全な場合があります。
x <- "12)34)56"
spl <- regexpr(")",x)
substring(x,c(1,spl+1),c(spl-1,nchar(x)))
#[1] "12" "34)56"
別のオプションは、パッケージstringr
でstr_split
を使用することです。
library(stringr)
f <- function(string)
{
unlist(str_split(string,"\\)",n=2))
}
> f("12)34)56")
[1] "12" "34)56"
最初の(
を印刷されない文字"\01"
に置き換えてから、その上でstrsplitします。 "\01"
の代わりに、表示されない限り、任意の文字を使用できます。
strsplit(sub(")", "\01", "12)34)56"), "\01")