Почему strsplit по-разному использует положительное предвидение и совпадение утверждений с задним взглядом?

Здравый смысл и здравомыслие с использованиемgregexpr() указывают на то, что приведенные ниже предварительные и прогнозные утверждения должны совпадать точно в одном местеtestString:

testString <- "text XX text"
BB  <- "(?<= XX )"
FF  <- "(?= XX )"

as.vector(gregexpr(BB, testString, perl=TRUE)[[1]])
# [1] 9
as.vector(gregexpr(FF, testString, perl=TRUE)[[1]][1])
# [1] 5

strsplit()однако эти совпадения используются по-разному, разбиваяtestString водин местоположение при использовании утверждения за кадром, но придва местоположения - второе из которых кажется неправильным - при использовании утверждения прогнозирования.

strsplit(testString, BB, perl=TRUE)
# [[1]]
# [1] "text XX " "text"    

strsplit(testString, FF, perl=TRUE)
# [[1]]
# [1] "text"    " "       "XX text"

У меня есть два вопроса:(Q1), Что тут происходит? А также(Q2), как можно получитьstrsplit() вести себя лучше?

Обновить: Отличный ответ Теодора Литры объясняет, что происходит, и поэтому адреса(Q1),, Мой ответ опирается на его, чтобы определить средство правовой защиты, обращаясь к(Q2),.

Ответы на вопрос(3)

Ваш ответ на вопрос