はのは、私は、文字列があるとしましょう:括弧内のテキストを解析して返すようにRを使用し
x <- "This is a string (Yay, string!)"
私は文字列を解析し、返却したいのですが、「イェーイ、文字列を!」
どうすればよいですか?
私はgrep/grepl/gsub/sub/etcの束を試しましたが、正規表現または引数の適切な組み合わせを見つけることができませんでした。一口。私は正規表現のスキルに取り組む必要があります。
はのは、私は、文字列があるとしましょう:括弧内のテキストを解析して返すようにRを使用し
x <- "This is a string (Yay, string!)"
私は文字列を解析し、返却したいのですが、「イェーイ、文字列を!」
どうすればよいですか?
私はgrep/grepl/gsub/sub/etcの束を試しましたが、正規表現または引数の適切な組み合わせを見つけることができませんでした。一口。私は正規表現のスキルに取り組む必要があります。
は、ここでそれを行うための二つの方法があります:
ワン
:したい文字列を検索し、見つかったビットを持つ文字列全体を交換してください。 (バック参照として知られている)gsub(".*\\((.*)\\).*", "\\1", x)
[1] "Yay, string!"
は、これは動作します:あなたはあなたが括弧を除外したいので、カッコ(.*)
\\1
を使用
\\(
と\\)
でこれらをエスケープする必要があります。 |
がOR
に似た作用するため gsub(".*\\(|\\).*", "", x)
[1] "Yay, string!"
これは動作します:
二
> bracketX(x)
[1] "This is a string"
> bracketXtract(x)
[1] "Yay, string!"
:
library(qdap)
x <- "This is a string (Yay, string!)"
bracketX(x)
bracketXtract(x)
収量:
qdap version 1.1.0はこれを行うことができます。
編集:ジョシュの例で...また
> x <- "This is (a) string (Yay, string!)"
> bracketX(x)
[1] "This is string"
> bracketXtract(x)
[1] "a" "Yay, string!"
、あなたの文字列の一部を取り出したいすべてがいくつかの括弧で囲まれた部分文字列を、含まれている可能性がある場合、正規表現を使用して、パワーツールgregexpr()
とregmatches()
:
x <- "This is (a) string (Yay, string!)"
pat <- "(?<=\\()([^()]*)(?=\\))"
regmatches(x, gregexpr(pat, x, perl=TRUE))
# [[1]]
# [1] "a" "Yay, string!"
の
ちょうどそのように、私は今、私の**答え**は、上記のタイラー・リンカーによって一瞬前に参照されたものと全く同じです! –
私はこの答えを正確な重複として閉じようとしました... –
これは 'qdap'の' bracketX'と 'bracketXtract'関数の基礎となりました。私は似ている質問をし、さらに詳細をここに提供します:http://stackoverflow.com/questions/8621066/remove-text-inside-brackets-parens-and-or-braces –
可能重複[Rにおける全ての括弧内の情報を抽出し(正規表現)](http://stackoverflow.com/questions/8613237/extract-info-inside-all-parenthesis-in-r-regex) –
間違いなく、愚か者ですが、答えは異なって見えます。 –
gsubfnパッケージの 'strapplyc'はそのような問題を処理します。次のコードの正規表現は '('の後ろに ')'ではない文字数を続けてかっこ内の部分を返します: 'library(gsubfn); strapplyc(x、 "\\(([^)] *)"、簡略化= TRUE) 'デフォルトで、非常に高速なtcl正規表現が使用されます。 James JoyceのUlyssesの全文を数秒で構文解析するための '?strapplyc'の例をチェックしてください。正規表現について学ぶことに関しては、gsubfnのホームページhttp://gsubfn.googlecode.comに正規表現のリソースへのリンクがあります。 –