Home » Php » php – Multiple regex capture groups using quantifiers

php – Multiple regex capture groups using quantifiers

Posted by: admin July 12, 2020 Leave a comment


Is there a way to get multiple capture groups out of a regex that is using quantifiers? For example, say I have this data (simplified from what I have to deal with):

<td>Data 1</td>
<td>data 2</td>
<td>data 3</td>
<td>data 4</td>

Right now, if I write a regex like this:


I end up with only one capture group, the last one “data 4”. Is there a way to use the quantifier and end up with 4 capture groups, or am I forced to write the regex like this to get what I want:


Yes, I am well aware that I can hack this simple example up much easier programmatically and then apply and necessary regexes or simpler pattern matches. The data I am working with is far more complex and I would really like to use a regex to handle all of the parsing.

How to&Answers:

With php you can use preg_match_all :

$str = '<td>Data 1</td>
<td>data 2</td>
<td>data 3</td>
<td>data 4</td>
preg_match_all('/(?:<td>(.+?)<\/td>\s*)/', $str, $m);


    [0] => Array
            [0] => <td>Data 1</td>

            [1] => <td>data 2</td>

            [2] => <td>data 3</td>

            [3] => <td>data 4</td>


    [1] => Array
            [0] => Data 1
            [1] => data 2
            [2] => data 3
            [3] => data 4