Почему вы не можете использовать квантификаторы повторения в нулевой ширине за утверждениями

У меня всегда было впечатление, что нельзя использовать кванторы повторений в утверждениях нулевой ширины (регулярные выражения, совместимые с Perl [PCRE]). Однако недавно мне стало ясно, что выМожно используйте их в прогнозных утверждениях.

Итак, мой вопрос:

Как работает механизм регулярных выражений PCRE при поиске с нулевой шириной, что не позволяет использовать квантификаторы повторения?

Вот простой пример из PCRE в R:

# Our string
x <- 'MaaabcccM'

##  Does it contain a 'b', preceeded by an 'a' and followed by zero or more 'c',
##  then an 'M'? 
grepl( '(?<=a)b(?=c*M)' , x , perl=T )
# [1] TRUE

##  Does it contain a 'b': (1) preceeded by an 'M' and then zero or more 'a' and 
##                         (2) followed by zero or more 'c' then an 'M'?
grepl( '(?<=Ma*)b(?=c*M)' , x , perl = TRUE )
# Error in grepl("(?<=Ma*)b(?=c*M)", x, perl = TRUE) : 
#   invalid regular expression '(?<M=a*)b(?=c*M)'
# In addition: Warning message:
# In grepl("(?<=Ma*)b(?=c*M)", x, perl = TRUE) : PCRE pattern compilation error
#         'lookbehind assertion is not fixed length'
#         at ')b(?=c*M)'

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

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