Учитывая регулярное выражение, содержащее группы захвата (круглые скобки) и строку, как я могу получить все подстроки, соответствующие группам захвата, подстроки, обычно ссылающиеся на "\ 1", "\ 2"?
Пример: рассмотрим цифры, которые будут содержать регулярные выражения, которым предшествует "xy":
s <- "xy1234wz98xy567"
r <- "xy(\\d+)"
Желаемый результат:
[1] "1234" "567"
Первая попытка: gregexpr
:
regmatches(s,gregexpr(r,s))
#[[1]]
#[1] "xy1234" "xy567"
Не то, что я хочу, потому что он возвращает подстроки, соответствующие всему шаблону.
Вторая попытка: regexec
:
regmatches(s,regexec("xy(\\d+)",s))
#[[1]]
#[1] "xy1234" "1234"
Не то, что я хочу, потому что он возвращает только первое совпадение для всего шаблона и группы захвата.
Если существовала функция gregexec
, расширение regexec
в качестве gregexpr
продолжается regexpr
, моя проблема будет решена.
Итак, возникает вопрос: как получить все подстроки (или индексы, которые можно передать в regmatches
, как в приведенных выше примерах), сопоставляя группы захвата в произвольном регулярном выражении?
Примечание: шаблон для r
, приведенный выше, является просто глупым примером, он должен оставаться произвольным.