如何使用 str_match(..., regex) 匹配多个捕获组

use*_*275 1 regex r capture string-matching stringr

我正在使用包str_match中的stringr内容来捕获括号之间的文本。

library(stringr)

strs = c("P5P (abcde) + P5P (fghij)", "Glcext (abcdef)")
str_match(strs, "\\(([a-z]+)\\)")
Run Code Online (Sandbox Code Playgroud)

只给我匹配"abcde""abcdef"。如何"fghij"在仍然对两个字符串使用相同的正则表达式的情况下捕获?

Mat*_*rde 5

str_extract_all(strs, "\\(([a-z]+)\\)")
Run Code Online (Sandbox Code Playgroud)

或者正如 @JoshO'Brien 在他的评论中提到的,

str_match_all(strs, "\\(([a-z]+)\\)")
Run Code Online (Sandbox Code Playgroud)

这可以使用基本 R 轻松完成:

regmatches(strs, gregexpr("\\(([a-z]+)\\)", strs))
Run Code Online (Sandbox Code Playgroud)