preg_match_all how to get *all* combinations? Even overlapping ones

前端 未结 2 645
半阙折子戏
半阙折子戏 2021-01-18 20:39

Is there a way in the PHP regex functions to get all possible matches of a regex even if those matches overlap?

e.g. Get all the 3 digit substrings \'/[\\d

2条回答
  •  礼貌的吻别
    2021-01-18 20:43

    Look-ahead assertions to the rescue!

    preg_match_all('/(?=(\d{3}))/', $str, $matches);
    print_r($matches[1]);
    

    It basically captures whatever the look-ahead assertion is matching. Since the assertion is zero width, $matches[0] will only contain empty strings, but $matches[1] will contain the expected captured patterns.

提交回复
热议问题