How can PHP developers prevent subpatterns from being overwritten in regular expressions?

When using regular expressions in PHP, subpatterns can be captured and stored for later use. However, if multiple subpatterns are used in the same regular expression, the values of the subpatterns can be overwritten. To prevent this, developers can use named subpatterns instead of numbered subpatterns. Named subpatterns allow developers to refer to specific subpatterns by name, ensuring that they are not overwritten.

$pattern = '/(?P<name1>pattern1)(?P<name2>pattern2)/';
$string = 'input_string';

if (preg_match($pattern, $string, $matches)) {
    $subpattern1 = $matches['name1'];
    $subpattern2 = $matches['name2'];
    
    // Use $subpattern1 and $subpattern2 as needed
}