Совпадение совпадений регулярных выражений PCRE

У меня есть следующая строка

001110000100001100001 

и это выражение

 /[1]....[1]/g 

это делает два матча

Матчи

но я хочу, чтобы он также соответствовал шаблону между обоими как с lookbehind, так сказать, с перекрытием 1

У меня нет никакого понятия, как это может работать? вместо 0 это могут быть любые символы

Solutions Collecting From Web of "Совпадение совпадений регулярных выражений PCRE"

Общим трюком является использование техники захвата внутри неизведанного позитивного взгляда. Используйте это регулярное выражение с preg_match_all :

 (?=(1....1)) 

См. Демо-версию regex

Значения находятся в $matches[1] :

 $re = "/(?=(1....1))/"; $str = "001110000100001100001"; preg_match_all($re, $str, $matches); print_r($matches[1]); 

См. Справочное руководство :

Lookaround фактически соответствует символам, но затем отказывается от матча, возвращая только результат: совпадение или отсутствие совпадения. Вот почему их называют «утверждениями». Они не потребляют символы в строке, а только утверждают, возможно ли совпадение или нет.

Если вы хотите сохранить совпадение регулярного выражения внутри lookahead , вы должны поместить скобки вокруг регулярного выражения внутри lookahead , например: (?=(regex)) .