2016-07-06 7 views
2

私はいくつかの行を持ち、いくつかはかっこを持ち、いくつかはありません。 ABC(DEF)およびABCのようになります。私は括弧から情報を抽出したい:括弧の中の情報を抽出するR

  • ABC(DEF) - > DEF
  • ABC - > NA

私はそれはABCのために良い作品

gsub(".*\\((.*)\\).*", "\\1",X). 

を書いた(DEF )、括弧がない場合は "ABC"を出力します。

+0

を参照してくださいhttp://ideone.com/pq2NmX –

+0

また 'stringrを使用することができますstr_match(X、 "\\(([^()] *)\\)") ' –

答えて

0

正規表現でsubを使用するときにABCを取得したくない場合は、空でないすべての文字列と一致する代替語句を追加して削除する必要があります。

X <- c("ABC(DEF)", "ABC") 
sub(".*(?:\\((.*)\\)).*|.*", "\\1",X) 
         ^^^ 

IDEONE demoを参照してください。

gsubを使用する必要はありません。交換を1回行うだけで済みますので、subとなります。

また、stringrstr_matchもこの作業のために便利になります:

str_match(X, "\\((.*)\\)") 

または

str_match(X, "\\(([^()]*)\\)")