Re: RegOops
| From: | Robert Williams | Date: | Fri, 23 Oct 2015 19:02:48 +0000 |
| Subject: | Re: RegOops | ||
| References: | 1 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-325219@lists.php.net to get a copy of this message | ||
> On Oct 23, 2015, at 05:44, Karl DeSaulniers <karl@designdrumm.com> wrote:
>
> With the given string..
>
> vehicle10-vehicle-name
>
> Running regex in a preg_match like
>
> "/(\w+)([0-9+]+)-(.*)/"
>
> I am getting.
>
> array(
> 0 => vehicle10-vehicle-name
> 1 => vehicle1
> 2 => 0
> 3 => vehicle-name
> )
The \w sequence does match numbers — think “word” characters as in legal characters in
variable names (though it’s actually derived from Perl, not PHP). The more curious question is why
are the 1 and the 0 being split. The reason for that is because the first part of your expression is
fighting with the second part: they’re both greedy, so the first part grabs everything through 0,
then has to be backed off one character so that the second part can grab at least one digit in order
to satisfy the overall expression.
Also, the ‘+’ after the 9 in the second part is unnecessary, at least based on this sample data.
You’d only need it if you specifically want to include a ‘+’ character in the number sequence,
but I suspect you intended it as a repetition operator. Putting it in the brackets, however, it’s
taken literally.
--
Bob Williams
Business Unit Information Officer and
Senior Vice President of Software Development
Newtek Business Services Corp.
http://www.thesba.com/
Attachment: [application/pgp-signature] Message signed with OpenPGP using GPGMail signature.asc
Attachment: [application/pgp-signature] Message signed with OpenPGP using GPGMail signature.asc