RE: PCRE false match with preg_match?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> I recently encountered a strange behaviour, could someone please
> countercheck it, to either tell me there is an error in my pattern?
> 
> I have a test string: "7005-N/52"
> I have two match patterns: 	a) "/([0-9]*)\/(.*)/i"
> 				b) "/([0-9]*)\-(.*)/i"
> I check the test string with the help of preg_match, and they both
> matched, but normally variant a) shouldn't have matched.
> 
> Normally I test my patterns with the tool "The Regex Coach", and
> according to this tool it shouldn't have matched.
> PHP version is 5.0.4, PCRE extension version is 4.5 01-December-2003

Hi Jens

Your first pattern 'matches' because it finds a hit on the "/52" component
of your test string.

If you look at the pattern itself, it's because you're using the
'zero-or-more-occurrences' quantifier (ie "*") in the first part of your
pattern: "([0-9]*)".

It's a valid hit, because there are zero incidences of numeric characters
immediately prior to the "/52" component of the test string.

Changing the "*" to a "+" (at least one or more occurrences) could 'fix'
that pattern (ie so that it doesn't match your string), depending on any
other values being tested by it.

Much warmth,

Murray
---
"Lost in thought..."
http://www.planetthoughtful.org

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux