为了账号安全,请及时绑定邮箱和手机立即绑定

在R中的所有括号内提取信息

在R中的所有括号内提取信息

慕标5832272 2019-08-27 18:12:54
在R中的所有括号内提取信息我有一个字符串以及在多个括号内提取信息的内容。目前,我可以使用下面的代码从最后一个括号中提取信息。我该怎么做才能提取多个括号并作为向量返回?j <- "What kind of cheese isn't your cheese? (wonder) Nacho cheese! (groan) (Laugh)"                                                          sub("\\).*", "", sub(".*\\(", "", j))目前的输出是:[1] "Laugh"期望的输出是:[1] "wonder" "groan"  "Laugh"
查看完整描述

3 回答

?
慕虎7371278

TA贡献1802条经验 获得超4个赞

这是一个例子:

> gsub("[\\(\\)]", "", regmatches(j, gregexpr("\\(.*?\\)", j))[[1]])[1] "wonder" "groan"  "Laugh"

我认为这应该运作良好:

> regmatches(j, gregexpr("(?=\\().*?(?<=\\))", j, perl=T))[[1]][1] "(wonder)" "(groan)"  "(Laugh)"

但结果包括括号......为什么?

这有效:

regmatches(j, gregexpr("(?<=\\().*?(?=\\))", j, perl=T))[[1]]

感谢@MartinMorgan的评论。


查看完整回答
反对 回复 2019-08-27
?
芜湖不芜

TA贡献1796条经验 获得超7个赞

使用rex可以使这种类型的任务更简单一些。

matches <- re_matches(j,
  rex(
    "(",
    capture(name = "text", except_any_of(")")),
    ")"),
  global = TRUE)matches[[1]]$text#>[1] "wonder" "groan"  "Laugh"


查看完整回答
反对 回复 2019-08-27
  • 3 回答
  • 0 关注
  • 1883 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信