Bug in look-behind assertions in PCRE patterns ?

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

 




Dear All

Is this a bug ?

I'm using look-behind assertions within preg_match()
to ignore certain combinations of patterns. E.g. from
ref. manual is: (?<!foo)bar matches "bar" but only
if it's not preceded by "foo".

Here's my test script:
----------------
$line = '$res = foobar("ddd", "dfdf");';
if (preg_match("/(?<!foo)(bar)/", $line, $matches)) {
        echo "Should NOT match foobar, but found: ".$matches[1];
}

$line = '$res = $bar("ddd", "dfdf");';
if (preg_match("/(?<!\$)(bar)/", $line, $matches)) {
        echo "Should NOT match \$bar, but found: ".$matches[1];
}
----------------

In the first preg_match() is correctly ignores the foobar
function name. However the second preg_match() does NOT
ignore the $bar as I expected.

I converted this to Perl and it correctly ignores both!

Is this a bug, or am I missing something ?

using PHP-4.3.10 + apache 1.3.33 + fc 1

Many thanks

Ian
--
Ian Thurlbeck                http://www.stams.strath.ac.uk/
Statistics and Modelling Science, University of Strathclyde
Livingstone Tower, 26 Richmond Street, Glasgow, UK,  G1 1XH
Tel: +44 (0)141 548 3667           Fax: +44 (0)141 552 2079

--
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