|  | Posted by Robin Vickery on 08/12/05 11:39 
On 8/11/05, Leon Vismer <lvismer@tasmer.co.za> 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
  Navigation: [Reply to this message] |