Я искал и смог найти это обсуждение форума для достижения эффекта совпадающих совпадений.
Я также нашел следующий qaru.site/info/382061/... вопрос о поиске индексов для выполнения этой задачи, но не смог найти что-либо краткое о захвате совпадающих совпадений на языке R.
Я могу выполнить эту задачу на большинстве языков, поддерживающих (PCRE) с помощью утверждения Positive Lookahead при реализации группы захвата внутри просмотра для захвата совпадающих совпадений.
Но, фактически выполняя это так же, как и на других языках, используя perl=T
в R, результаты не получаются.
> x <- 'ACCACCACCAC'
> regmatches(x, gregexpr('(?=([AC]C))', x, perl=T))[[1]]
[1] "" "" "" "" "" "" ""
То же самое касается использования пакетов stringi
и stringr
.
> library(stringi)
> library(stringr)
> stri_extract_all_regex(x, '(?=([AC]C))')[[1]]
[1] "" "" "" "" "" "" ""
> str_extract_all(x, perl('(?=([AC]C))'))[[1]]
[1] "" "" "" "" "" "" ""
Правильные результаты, которые должны быть возвращены при выполнении этого:
[1] "AC" "CC" "AC" "CC" "AC" "CC" "AC"
Изменить
-
Мне хорошо известно, что
regmatches
плохо работает с захваченными совпадениями, но что точно вызывает это поведение в регматиках и почему результаты не возвращаются? Я убираю несколько подробный ответ. -
Является ли пакет
stringi
иstringr
не способен выполнять это черезregmatches
? -
Пожалуйста, не стесняйтесь добавлять к моему ответу или придумывать другое обходное решение, чем я нашел.