Re: RegOops
| From: | Frank Arensmeier | Date: | Fri, 23 Oct 2015 12:54:26 +0000 |
| Subject: | Re: RegOops | ||
| References: | 1 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-325218@lists.php.net to get a copy of this message | ||
> 23 okt 2015 kl. 14:44 skrev Karl DeSaulniers <karl@designdrumm.com>:
>
> Hello all,
> 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
> )
>
> If I change it to.
>
> "/(\D+)([0-9+]+)-(.*)/"
>
> it works as expected.
>
> array(
> 0 => vehicle10-vehicle-name
> 1 => vehicle
> 2 => 10
> 3 => vehicle-name
> )
>
> Why is the \w directive including a digit?
> Since when is the number 1 a word??
>
> If anyone could enlighten me, I would greatly appreciate it.
>
> TIA
>
> Best,
>
> Karl DeSaulniers
> Design Drumm
> http://designdrumm.com
>
Hi Karl!
I am not able to pinpoint the exact definition in the official PCRE documentation right now
(http://www.pcre.org). But the short hand \w does in deed include numbers. As you can read here for
example (https://docs.oracle.com/javase/tutorial/essential/regex/pre_char_classes.html),
\w A word character: [a-zA-Z_0-9]
Although its already Friday, your pattern is working as expected.
/frank