私はこれに使用することを好みますgsub()
:
gsub(".*\\((.*)\\).*", "\\1", df)
[1] "id-1290"
正規表現は次のように機能します。
- 括弧内のテキストを検索します-実際の括弧ではなく、私の余分な括弧のセット、つまり
(.*)
- これを後方参照として返します。
\\1
つまり、文字列内のすべてのテキストを後方参照に置き換えます
regexp
ではなくを使用する場合はgsub
、次のようにします。
x <- regexpr("\\((.*)\\)", df)
x
[1] 11
attr(,"match.length")
[1] 9
attr(,"useBytes")
[1] TRUE
これは11の値、つまり見つかった式の開始位置を返します。match.length
また、一致した文字数を示す属性に注意してください。
これは次のように抽出できますattr
:
attr(x, "match.length")
[1] 9
次に、を使用substring
して文字を抽出します。
substring(df, x+1, x+attr(x, "match.length")-2)
[1] "id-1290"