This regex: (.*?)(?:I[0-9]-)*I3(?:-I[0-9])*
соответствует выражению, использующему несколько групп. Точка регулярного выражения состоит в том, что он захватывает шаблоны парами из двух, где перед первой частью регулярного выражения должна следовать вторая часть регулярного выражения.Извлечение групп захвата из регулярного выражения
Как я могу извлечь каждую из этих двух групп?
library(stringr)
data <- c("A-B-C-I1-I2-D-E-F-I1-I3-D-D-D-D-I1-I1-I2-I1-I1-I3-I3-I7")
str_extract_all(data, "(.*?)(?:I[0-9]-)*I3(?:-I[0-9])*")
дает мне:
[[1]]
[1] "A-B-C-I1-I2-D-E-F-I1-I3" "-D-D-D-D-I1-I1-I2-I1-I1-I3-I3-I7"
Однако, я хотел бы что-то вдоль линий:
[[1]]
[1] "A-B-C-I1-I2-D-E-F" [2] "I1-I3"
[[2]]
[1] "D-D-D-D" [2] "I1-I1-I2-I1-I1-I3-I3-I7"
Ключевым моментом здесь является то, что регулярное выражение соответствует дважды, каждый раз, содержащий 2 группы. Я хочу, чтобы каждое совпадение имело собственный список, и этот список содержал 2 элемента, по одному для каждой группы.
вау .... полностью неверно прояснил вопрос .... – Nefariis
'(?: ...)' - не захватывающая группа ... – hwnd
У вас нет двух групп захвата. – hwnd