Waldi: Reg. Ausdruck - Blackout nach 11 Stunden Arbeit

Hallo,
ich bin am Verzweifeln,
ich wollte heute noch mit dem Progrämmchen fertig werden und jetzt hängt es an einem banalen regulären Ausdruck.
Ich wollte führende und nachfolgend Leerstellen aus einem Feld entfernen mit

  
$feld1 =~ /^ *(! .*! ) */;  
$feld1 = $1;  

Meine Überlegung war "beliebig viele Leerstellen am Anfang, dann der gesuchte String beginnend mit Nichtleerzeichen, gefolgt von beliebigen Zeichen und endend mit einem Nichtleerzeichen. Danach beliebig viele Leerzeichen.
Leider funktioniert es so nicht.
Ich würde mich freuen, wenn ich heute noch die Lösung bekäme - sonst halt morgen.
Danke
Waldi

  1. $feld1 =~ /^ (! .! ) */;
    $feld1 = $1;

    Was meinst Du, welche Bedeutung das Ausrufezeichen in einer RE hat?  
    Was meint die Perl-Doku, welche Bedeutung das Ausrufezeichen in einer RE hat?  
      
    Ersetze die Leerzeichen am Anfang durch \*gar nichts\*, ersetze die Leerzeichen am Ende durch \*gar nichts\*. Das ist wesentlich einfacher zu formulieren und birgt nicht das Risiko, das $feld1 undefiniert wird wie in Deinem Code.  
      
    Alexander
    
  2. Hi
    ich weiß nicht ob ich dein problem verstanden habe aber leerzeichen am anfang und ende kann auch:
    trim --  Entfernt Whitespaces (oder andere Zeichen) am Anfang und Ende eines Strings

    MFG Hageb

    1. Sorry trim war php ich nehm alles zurück...

  3. Hallo,

    Ich wollte führende und nachfolgend Leerstellen aus einem Feld entfernen mit

    ist $text  =~ s/^\s+|\s+$//; nicht das, das du suchst?

    Markus

    1. Hallo,

      Ich wollte führende und nachfolgend Leerstellen aus einem Feld entfernen mit

      ist $text  =~ s/^\s+|\s+$//; nicht das, das du suchst?

      Das funktioniert, wenn nur führende oder nur nachfolgende Leerstellen vorhanden sind, nicht aber, wenn vorne und hinten Leerstellen vorhanden sind.
      Gruss Waldi

      1. ist $text  =~ s/^\s+|\s+$//; nicht das, das du suchst?
        Das funktioniert, wenn nur führende oder nur nachfolgende Leerstellen vorhanden sind, nicht aber, wenn vorne und hinten Leerstellen vorhanden sind.

        Verwende den g-Modifier und alles wird gut.

        Siechfred

        --
        Ein Selbständiger ist jemand, der bereit ist, 16 Stunden am Tag zu arbeiten, nur um nicht 8 Stunden für einen Anderen arbeiten zu müssen.
        1. »

          Verwende den g-Modifier und alles wird gut.

          ... und alles ward gut, danke allen.

    2. Hi,

      ist $text  =~ s/^\s+|\s+$//g; nicht das, das du suchst?

      $text =~ s/^\s+//;
      $text =~ s/\s+$//;

      Laut "Mastering Regular Expressions", 2nd Edition, von Jeffrey E.F. Friedl, S. 199 ist Deine Variante etwa 4 mal so langsam wie die Variante mit den 2 einzelnen Ersetzungen (wegen der top-level alternation fallen Optimierungsmöglichkeiten weg, der g-Modifier, ...)

      Er rät an der Stelle davon ab, andere Varianten zu verwenden als die mit den 2 Ersetzungen, da sie zwar genauso effektiv, aber weniger effizient sind.

      cu,
      Andreas

      --
      Warum nennt sich Andreas hier MudGuard?
      O o ostern ...
      Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.