src/Path.php
protected function processing(): void
    {
        $this->value = \preg_replace_callback(
            '~\<(?<key>' . $this->defaultRegex . '+):(?<value>.+?)>~',
            function (array $matches) {

                if (!empty($this->regex[$matches['key']])) {
                    throw new Runtime(\sprintf(
                        'duplicate in registry key `%s` for path `%s`',
                        $matches['key'],
                        $this->value
                    ));
                }

                if (!empty($matches['value'])) {
                    $this->regex[$matches['key']] = $matches['value'];
                }

                return '<' . $matches['key'] . '>';
            },
            $this->value
        );
    }
protected function processing(): void
    {
        $this->value = \preg_replace_callback(
            '~\<(?<key>' . $this->defaultRegex . '+):(?<value>.+?)>~',
            function (array $matches) {

                if (!empty($this->regex[$matches['key']])) {
                    throw new Runtime(\sprintf(
                        'duplicate in registry key `%s` for path `%s`',
                        $matches['key'],
                        $this->value
                    ));
                }

                if (!empty($matches['value'])) {
                    $this->regex[$matches['key']] = $matches['value'];
                }

                return '<' . $matches['key'] . '>';
            },
            $this->value
        );
    }
protected function processing ( ) : void { $ this -> value = \ preg_replace_callback ( '~\<(?<key>' . $ this -> defaultRegex . '+):(?<value>.+?)>~' , function ( array $ matches ) { if ( ! empty ( $ this -> regex [ $ matches [ 'key' ] ] ) ) { throw new Runtime ( \ sprintf ( 'duplicate in registry key `%s` for path `%s`' , $ matches [ 'key' ] , $ this -> value ) ) ; } if ( ! empty ( $ matches [ 'value' ] ) ) { $ this -> regex [ $ matches [ 'key' ] ] = $ matches [ 'value' ] ; } return '<' . $ matches [ 'key' ] . '>' ; } , $ this -> value ) ; }
processing:
path: '/(<lang:\w+>)' -> '/(<lang>)'
re: [] -> ['lang' => '\w+']

if attr exists -> throws
processing : path : / ( <lang : \ w + > ) - > / ( <lang > ) re : [] - > [ lang = > \ w + ]