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

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

我有一个字符串以及在多个括号内提取信息的内容。目前,我可以使用下面的代码从最后一个括号中提取信息。我该怎么做才能提取多个括号并作为向量返回?

j <- "What kind of cheese isn't your cheese? (wonder) Nacho cheese! (groan) (Laugh)"                                                          sub("\\).*", "", sub(".*\\(", "", j))

目前的输出是:

[1] "Laugh"

期望的输出是:

[1] "wonder" "groan"  "Laugh"


慕标5832272
浏览 1884回答 3
3回答

慕虎7371278

这是一个例子:>&nbsp;gsub("[\\(\\)]",&nbsp;"",&nbsp;regmatches(j,&nbsp;gregexpr("\\(.*?\\)",&nbsp;j))[[1]])[1]&nbsp;"wonder"&nbsp;"groan"&nbsp;&nbsp;"Laugh"我认为这应该运作良好:>&nbsp;regmatches(j,&nbsp;gregexpr("(?=\\().*?(?<=\\))",&nbsp;j,&nbsp;perl=T))[[1]][1]&nbsp;"(wonder)"&nbsp;"(groan)"&nbsp;&nbsp;"(Laugh)"但结果包括括号......为什么?这有效:regmatches(j,&nbsp;gregexpr("(?<=\\().*?(?=\\))",&nbsp;j,&nbsp;perl=T))[[1]]感谢@MartinMorgan的评论。

芜湖不芜

使用rex可以使这种类型的任务更简单一些。matches&nbsp;<-&nbsp;re_matches(j, &nbsp;&nbsp;rex( &nbsp;&nbsp;&nbsp;&nbsp;"(", &nbsp;&nbsp;&nbsp;&nbsp;capture(name&nbsp;=&nbsp;"text",&nbsp;except_any_of(")")), &nbsp;&nbsp;&nbsp;&nbsp;")"), &nbsp;&nbsp;global&nbsp;=&nbsp;TRUE)matches[[1]]$text#>[1]&nbsp;"wonder"&nbsp;"groan"&nbsp;&nbsp;"Laugh"
打开App,查看更多内容
随时随地看视频慕课网APP