[Vienna-pm] Regex aus Datei lesen

Stefan Weiss spaceman at foo.at
Tue Oct 28 04:29:26 PDT 2008


Hi.

Ich möchte eine Liste von Regular Expressions (nur Matching, keine
Substitution) aus einer Datei lesen und eine nach der anderen auf einen
Text anwenden. Die Regexen können nicht länger als eine Zeile sein, und
müssen mit / und /[gsmix]* begrenzt sein.

Dabei darf aber nicht unabsichtlich Code ausgeführt werden können, oder
sonstwelche Nebeneffekte eintreten. Folgende Stellen sind zum Beispiel
problematisch:

(?{code})
(??{code})
${code}
@{code}

Ich möchte eigentlich vermeiden, die Regexen selbst zu parsen (händisch
oder durch Module wie YAPE::Regex). Komme ich mit so einer Überprüfung
durch, oder gibt's da noch Schlupflöcher?

$unsafe_regex = qr/
   \( \s* \?{1,2} \{  # matcht (?{code}) und (??{code})
   |
   [$@]\{             # matcht halt leider auch /foo\@{4}bar/
/x;

Das Skript wird händisch in der Commandline ausgeführt; um DoS durch zu
komplexe Regexen mache ich mir deshalb weniger Sorgen.


TIA,
Stefan


-- 
LOAD"Ph'nglui mglw'nafh Cthulhu R'lyeh wgah'nagl fhtagn!",8,1
RUN!


More information about the Vienna-pm mailing list