Re: Regular expression question

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

 



On 8/11/05, Leon Vismer <lvismer@xxxxxxxxxxxx> wrote:
> Hi Robin
> 
> Many thanks for this,
> 
> how would one extend this to support the following:
> $str = "insert into userComment (userID, userName, userSurname) values (0,
> 'Leon', 'mcDonald')";
> 
> one does not want
> 
> $str = "insert into user_comment (user_id, user_name, user_surname) values (0,
> 'Leon', 'mc_donald')";

$match  = '/(?<=[a-z])(?<![Mm]c|[Mm]ac)([A-Z]+)/e';

Should make exceptions for "McDonald", "mcDonald", "MacDonald" and "macDonald". 

With luck you don't have any tables called something like "appleMacUsers".

> unfortunately lookbehind assertions does not support non-fixed length chars so
> /(?<=(?<!')[a-z])([A-Z]+)/e will work for 'mDonald' but the following will not
> work.

True, lookbehind assertions must be a fixed length - but unlike in
perl, they can have alternates which are different fixed lengths:

This is illegal, because the length isn't fixed:  (?<![Mm]a?c) 

This is fine, because each alternate is fixed even though they are
diffferent lengths: (?<![Mm]c|[Mm]ac)

 -robin

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