が、私はよりよい解決策があるかなり確信していることを転送するが、これは動作します
jnk <- 'G30(H).G3(M).G0(L).Replicate(1)'
patter <- '([^\\(]+)\\(H\\)\\.([^\\(]+)\\(M\\)\\.([^\\(]+)\\(L\\)\\.Replicate\\(\\d+\\)'
H <- sub(patter, '\\1', jnk)
M <- sub(patter, '\\2', jnk)
L <- sub(patter, '\\3', jnk)
EDIT:
実際に、私は一度非常に良い機能を発見しましたparse.one
これは、正規表現のようなPythonでさらに検索することができます...
これを見てください:
parse.one <- function(res, result) {
m <- do.call(rbind, lapply(seq_along(res), function(i) {
if(result[i] == -1) return("")
st <- attr(result, "capture.start")[i, ]
substring(res[i], st, st + attr(result, "capture.length")[i, ] - 1)
}))
colnames(m) <- attr(result, "capture.names")
m
}
jnk <- 'G30(H).G3(M).G0(L).Replicate(1)'
pattern <- '(?<H>[^\\(]+)\\(H\\)\\.(?<M>[^\\(]+)\\(M\\)\\.(?<L>[^\\(]+)\\(L\\)\\.Replicate\\(\\d+\\)'
parse.one(jnk, regexpr(pattern, jnk, perl=TRUE))
結果は次のようになります。順序は常に同じである場合
> parse.one(jnk, regexpr(pattern, jnk, perl=TRUE))
H M L
[1,] "G30" "G3" "G0"
regex101.comの試行[こちら](https:// regex101)をご覧ください。com/r/cZ0sD2/66)。 – balin
あなたは多くの回答をいただきました!最も有用で最も一般的なものを見つけたもの(回答の左側のチェックマーク)を受け入れることを検討してください。それはコミュニティがあなたのために働いた答えを知り、あなたが受け取った助けを認めます。 – CPak