[PHP] preg_match lookbehind assertion...

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik ben een tool aan het bouwen die automatisch ActionScript class-bestanden documenteert in de vorm van een HTML file. Waar ik echter vastloop is bij het filteren van de class variabelen.

Zoals de meeste OOP coders wel weten vind je van boven naar beneden de volgende structuur:
  1. Class definitie
  2. Declaratie variabelen
  3. Functies
Nu lees ik het class-bestand (.as) in en voeg alle regels samen tot 1 string. Vervolgens wil ik met preg_match checken welke variabele declaraties NIET vooraf worden gegaan door het "function" keyword. De enige manier waarop dit kan is met de lookbehind assertion, ik slaag er echter niet in.

Hieronder de regexp die ik gebruik:

PHP:
1
preg_match_all("/(?<!function).*((public\s|private\s|static\s)*var\s+.*);/mU", $this->lineString, $matchesVariable);


Kan iemand aanwijzen wat ik verkeerd doe?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
*BUMP*

Niemand :?

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:44

crisp

Devver

Pixelated

Met lookbehind assertions kan je alleen kijken of iets al dan niet direct voorafgegaan wordt door iets anders; op het moment dat je daartussen iets met wildcards gaat gebruiken geraak je in de problemen. Ik denk dat je dus achteraf met een 2e regexp zal moeten gaan filteren ;)

Intentionally left blank


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ok. Dan split ik de sting wel op het eerste voorkomen van "function" en doe ik de regexp op de eerste helft. That makes sense, right?