Добавление оператора плюс к поиску ключевых слов в MySQL

Стандарт regmatches плохо работает с захваченными совпадениями (в частности, несколько захваченных совпадений в одной строке). И в этом случае, поскольку вы «сопоставляете» взгляд вперед (игнорируя захват), само совпадение имеет нулевую длину. Существует также функция regmatches()<-, которая может это проиллюстрировать. Obseerve

x <- 'ACCACCACCAC'
m <- gregexpr('(?=([AC]C))', x, perl=T)
regmatches(x, m) <- "~"
x
# [1] "~A~CC~A~CC~A~CC~AC"

Обратите внимание, что все буквы сохранены, мы просто заменили места совпадений нулевой длины тем, что мы можем наблюдать.

Я создал regcapturedmatches () , которую я часто использую для таких задач. Например,

x <- 'ACCACCACCAC'
regcapturedmatches(x, gregexpr('(?=([AC]C))', x, perl=T))[[1]]

#      [,1] [,2] [,3] [,4] [,5] [,6] [,7]
# [1,] "AC" "CC" "AC" "CC" "AC" "CC" "AC"

gregexpr захватывает все данные просто отлично, поэтому вы можете извлечь его из этого объекта в любом случае, если вы предпочитаете не использовать эту вспомогательную функцию.

0
задан bxs 20 March 2019 в 14:56
поделиться