Werner Gundlach: Frage an Reg. Expression Profis

Hallo.

Ich habe ein Problem mit Regulären Ausdrücken in Perl und würde mich freuen, wenn mir jemand helfen könnte.

Problem:
Über ein Formular können Nutzer Inhalte in Webseiten schreiben.
Wenn Sie ein "_" schreiben, wird das in meinem Script umgewandelt in ein festes Leerzeichen: " " (z.B. 22._September - damit nach "22." kein Zeilenumbruch folgt).

$string = s/_/ /g;

Kein Problem.

Problematisch wird es, wenn HTML-Tags eingefügt werden und innerhalb dessen auch "_" vorkommt (z.B. in Dateinamen). Das darf dann natürlich NICHT in ein festes Leerzeichen umgewandelt werden.

Gibt es eine regulären Ausdruck, mit dem das hinzubekommen ist?

Vielen Dank schonmal.

Werner

  1. Hi,

    Gibt es eine regulären Ausdruck, mit dem das hinzubekommen ist?

    nein; aber als Grundlage gibt es

    perldoc perlfaq4
    "How can I split a [character] delimited string except when inside [character]? (Comma-separated files)"

    Du willst zwar nicht splitten, aber möglicherweise ist es sinnvoll, genau das zu tun und anschließend per join wieder zu verbinden.

    Ansonsten hilft Dir vielleicht das Modul HTML::Parser weiter.

    Cheatah