R 正则表达式直到括号关闭的第一次出现

R 正则表达式直到括号关闭的第一次出现,r,regex,stringr,R,Regex,Stringr,我有一个名为cars的字符串,如下所示: cars [1] "Only one car(52;model-14557) had a good engine(workable condition), others engine were damaged beyond repair" [2] "Other car(21, model-155) looked in good condition but car ( 36, model-8878) looked to be in terrible

我有一个名为
cars
的字符串,如下所示:

cars
[1] "Only one car(52;model-14557) had a good engine(workable condition), others engine were damaged beyond repair"   
[2] "Other car(21, model-155) looked in good condition but car ( 36, model-8878) looked to be in terrible condition."
我需要从字符串中提取以下部分:

car(52;model-14557)
car(21, model-155)
car ( 36, model-8878)
我试着用下面的罐子来提取它:

stringr::str_extract_all(cars, "(.car\\s{0,5}\\(([^]]+)\\))")
这给了我以下输出:

[[1]]
[1] " car(52;model-14557) had a good engine(workable condition)"

[[2]]
[1] " car(21, model-155) looked in good condition but car ( 36, model-8878)"
有没有一种方法可以提取带有相关编号和型号的单词cars?

因为您使用的是
[^]]+
,一个或多个与
匹配的符号,因此从第一个
到最后一个
)匹配
之间没有
]

使用


正是我想要的。非常感谢。
> cars <- c("Only one car(52;model-14557) had a good engine(workable condition), others engine were damaged beyond repair","Other car(21, model-155) looked in good condition but car ( 36, model-8878) looked to be in terrible condition.")
> library(stringr)
> str_extract_all(cars, "\\bcar\\s*\\([^()]+\\)")
[[1]]
[1] "car(52;model-14557)"

[[2]]
[1] "car(21, model-155)"    "car ( 36, model-8878)"
> regmatches(cars, gregexpr("\\bcar\\s*\\([^()]+\\)", cars))
[[1]]
[1] "car(52;model-14557)"

[[2]]
[1] "car(21, model-155)"    "car ( 36, model-8878)"