在我的成绩单中,无声停顿用圆括号表示,例如 (0.9) 和 (.) 表示停顿 yy <- c("well [yes right] (.)", "let's go ((giggles))", "oh [ we::ll] i do n't (0.5) know", "erm [°well right° ]", "(3.2)")这提取了所有的停顿,但也提取了抄录员的评论:pattern <- "(\\(.*?\\))"grep(pattern, yy, value=T)matches <- gregexpr(pattern, yy)paus <- regmatches(yy, matches)paus <- unlist(paus)paus[1] "(.)" "((giggles)" "(0.5)" "(3.2)"为了摆脱评论,我试过这个:pattern <- "\\([^\\(].*?\\)[^\\)].*?"找到了“(0.5)”,但没有找到字符串结尾的停顿“(.)”和“(3.2)”。任何指针? 最佳答案 我们可以使用 str_extract 来提取模式,该模式表示一个可选数字后跟一个小数,然后是另一个可选数字值。我们在这里使用可选的 ("?") 来获取空值 "(.)"。library(stringr)vec <- str_extract(yy, "(\\((\\d+)?(\\.(\\d)?\\)))")vec#[1] "(.)" NA "(0.5)" NA "(3.2)"然后使用 is.na 删除 NA 元素vec[!is.na(vec)]#[1] "(.)" "(0.5)" "(3.2)"或者使用与基 R regmatches 相同的正则表达式可以节省删除 NA 值的步骤。regmatches(yy, regexpr("(\\((\\d+)?(\\.(\\d)?\\)))", yy))#[1] "(.)" "(0.5)" "(3.2)"关于r - 使用R中的正则表达式提取圆括号中的字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50464824/
10-12 13:59