Johann: Regex Teil suchen, anderen Teil ersetzen

Hallo Zusammen

Ich bin nicht sonderlich versiert auf Regex darum bitte ich euch um Hilfe:

Ich habe einen String in folgender Form:

#VALUE "CompileUser", "Administrator"

Ich habe zudem zwei Variablen "$id" und "$value"

nur benötige ich einen Regex der folgendes macht:
Wenn in der Variabel $id "CompileUser" steht, dann muss "Administrator" durch den Inhalt in der Variabel $value ersetzt werden.

Ich hoffe ihr könnt mir helfen!

Gruss,
Johann

  1. Ich habe einen String in folgender Form:
    #VALUE "CompileUser", "Administrator"
    Ich habe zudem zwei Variablen "$id" und "$value"
    nur benötige ich einen Regex der folgendes macht:
    Wenn in der Variabel $id "CompileUser" steht, dann muss "Administrator" durch den Inhalt in der Variabel $value ersetzt werden.
    Ich hoffe ihr könnt mir helfen!

    Freilich.
    Was hast du bis jetzt bezüglich

    $var eq 'value' and
                 $string =~ s/search/replace/;

    versucht?

    mfg Beat

    --
    Woran ich arbeite:
    X-Torah
    ><o(((°>           ><o(((°>
       <°)))o><                     ><o(((°>o
    1. meinst du so:

      if($line =~ /$id/){
       $line =~ s/#VALUE "$id", "(.+?)"/#VALUE "$id", "$value"/;
      }

      der Regex stimmt vermutlich nicht, was ist daran falsch?

      1. meinst du so:

        if($line =~ /$id/){
        $line =~ s/#VALUE "$id", "(.+?)"/#VALUE "$id", "$value"/;
        }

        der Regex stimmt vermutlich nicht, was ist daran falsch?

        Was heisst vermutlich? use warnings klärt dich über Syntaxfehler auf

        Du kannst das natürlich vereinfachen:
        erstens brauchst du ja das, was du einklammerst nicht mehr, warum also Klammern?
        anderseits gibt es Dinge die du wieder brauchst:

        $line =~ s/(#VALUE\s"$id",\s")(?:[^"]+?)(")/$1$value$2/;
                   $1                      no capt.  $2
        auf die If Abfrage kann man hier verzichten.

        mfg Beat

        --
        Woran ich arbeite:
        X-Torah
        ><o(((°>           ><o(((°>
           <°)))o><                     ><o(((°>o