Stefan: Reguläre Ausdrücke

Einen wunderschönen guten Morgen!

Meiner einer hat mal wieder ein kleines Problem zu Perl.
Genauer gesagt geht es um die regulären Ausdrücke.

Ich möchte aus einem String den kompletten Teil nach dem '=' bis zum Zeilenende auslesen. Mit   $lat=~ m/=.*$/g   funktioniert das auch ganz gut, nur dummerweise ist noch das '=' mit enthalten. Nun könnte ich es ja einfach entfernen oder ersetzen aber das ist mir bei der Fülle an Dateien die das Programm später durchkämmen soll einfach zuviel Aufwand. Gibt es nicht vielleicht einfach eine Möglichkeit gleich bei der Suchabfrage das '=' wieder rauszuschmeißen????

Hoffe ihr könnt mir weiterhelfen....ich bedank mich schonmal im vorraus.

viele Grüße
Stefan

  1. Halli,

    Ich möchte aus einem String den kompletten Teil nach dem '=' bis zum Zeilenende auslesen. Mit   $lat=~ m/=.*$/g   funktioniert das auch ganz gut, nur dummerweise ist noch das '=' mit enthalten.

    Sicher kann man das auch mit einem Regex lösen ( /[^=]*$/ ), aber ich würde eher mit den beiden Funktionen index und substr arbeiten. Denn das Problem erfordert es nicht, einen Regex zu nutzen.

    cu,
    Robert

    1. Hi Robert,

      Sicher kann man das auch mit einem Regex lösen ( /[^=]*$/ ), aber ich würde eher mit den beiden Funktionen index und substr arbeiten. Denn das Problem erfordert es nicht, einen Regex zu nutzen.

      Also mit dem Regex funktioniert es nicht....denn da liest er einfach alles ein, auch das was vor dem '=' steht.

      Die Funktionen index und substr sind mir unbekannt...kannst du mir vielleicht sagen wo ich Infos zur Verwendung der Funktionen finde oder vielleicht sogar selbst kurz erklären was du meinst???

      greez
      Stefan

      1. Halli

        Sicher kann man das auch mit einem Regex lösen ( /[^=]*$/ ), aber ich würde eher mit den beiden Funktionen index und substr arbeiten. Denn das Problem erfordert es nicht, einen Regex zu nutzen.
        Also mit dem Regex funktioniert es nicht....denn da liest er einfach alles ein, auch das was vor dem '=' steht.

        Nein.

        Die Funktionen index und substr sind mir unbekannt...kannst du mir vielleicht sagen wo ich Infos zur Verwendung der Funktionen finde oder vielleicht sogar selbst kurz erklären was du meinst???

        Da, wo Du zu allen Funktionen/Modulen Hilfe findest: perldoc
        perldoc -f index
        perldoc -f substr

        mit index die Position des = feststellen, mit substr dann den gewünschten Teilstring extrahieren.

        cu,
        Robert

  2. Moin Moin !

    $line='some key = some value (may have "=" inside)';

    ($key,$value)=split /=/,$line,2;

    print $key; # 'some key '
    print $value; # ' some value (may have "=" inside)'

    Mit split /\s*=\s*/,$line,2 werden die Spaces rund ums "=" auch noch entfernt.

    Alexander

    --
    Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so!"