2

' M_South_Africa_5_14 'や' P_Zimbabwe_Tot 'のような文字列を持つベクトルから国を抽出したいと思います。単一のgrepまたはstringr::str.extractステートメントでそれを実行しようとして失敗しました。もちろん、文字列を「_」で分割してから断片を収集することもできますが、正規表現でそれを行うことは可能でしょうか?

grep(value = TRUE, 
     x = 'M_South_Africa_5_14', 
     pattern = '(?!^[PMF]{1})(?![_])([A-Za-z]{2,20})[_][A-Za-z]{2,20}(?!$)|(?!^[PMF]{1})(?![_])([A-Za-z]{2,20})', 
     perl = TRUE)

もちろん、この正規表現モンスターを単純化するのは素晴らしいことですが、実際には、Rで正規表現ルックアップを実行できるかどうかを知りたいと思います。

4

1 に答える 1

4

これはあなたの例で機能します:

> library(gsubfn)
> x <- c('M_South_Africa_5_14', 'P_Zimbabwe_Tot')
> pat <- "_(.*\\D)_"
> strapplyc(x, pat)
[[1]]
[1] "South_Africa"

[[2]]
[1] "Zimbabwe"
于 2013-02-21T00:02:19.900 に答える