这个问题在这里已经有了答案:
8年前关闭。
Possible Duplicate:
Extract info inside all parenthesis in R (regex)
我有一个字符串
df
Peoplesoft(id-1290)
例如,我喜欢捕捉括号之间的字符。我喜欢从上面的例子中得到 id-1290。
我用过这个:
x <- regexpr("\\((.*)\\)", df)
这给了我这样的数字
[1] 10
有没有一种简单的方法可以在 R 中使用正则表达式在括号之间抓取文本?
最佳答案
我更喜欢使用 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"
关于正则表达式在括号之间挑选一些文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13498843/