6

stringrパッケージを使用して、2 つの特定のパターンの間にある文字列の一部を抽出しようとしています。

たとえば、私は持っています:

my.string <- "nanaqwertybaba"
left.border  <- "nana"
right.border <- "baba"

str_extract(string, pattern)関数 (パターンはPOSIX 正規表現で定義されます) を使用して、次の情報を受け取りたいと思います。

"qwerty"

Google のソリューションは機能しませんでした。

4

4 に答える 4

9

stringrが提供する関数でこれが可能かどうか、またどのように可能かはわかりませんが、 baseregexprと を使用することもできますsubstring

pattern <- paste0("(?<=", left.border, ")[a-z]+(?=", right.border, ")")
# "(?<=nana)[a-z]+(?=baba)"

rx <- regexpr(pattern, text=my.string, perl=TRUE)
# [1] 5
# attr(,"match.length")
# [1] 6

substring(my.string, rx, rx+attr(rx, "match.length")-1)
# [1] "qwerty"
于 2014-04-07T22:43:12.180 に答える
6

stringrstr_matchから使用します。参照

str_match(my.string, paste(left.border, '(.+)', right.border, sep=''))[,2]

上記のコードは、左右の境界線 (文字列間にスペースなし) を使用して、1 つ以上の文字をキャプチャpasteするキャプチャ グループを連結して正規表現を作成します。(.+)

1 回の一致が想定されます。したがって、[,2]によって返される行列から 2 番目の列が選択されstr_matchます。

于 2015-02-11T09:52:42.510 に答える