regulärer ausdruck + 2 sachen ändern?

hallo und guten abend,
ich bin heute auf diese große community gestoßen und habe auch gleich eine frage.

ist es mit einem reg. ausdruck möglich, in einem string 2 sachen zu ändern?

beispiel:
$string = „Das blaue Haus soll noch blauer werden!“;

aus diesem string soll dann der folgende werden:
$string_neu = „Das grüne Haus soll noch grüner werden!“;

ist soetwas mit einem reg. ausdruck möglich, und wenn ja,
wie müsste die syntax aussehen?

vielen dank!

oliver

beispiel:
$string = „Das blaue Haus soll noch blauer werden!“;

aus diesem string soll dann der folgende werden:
$string_neu = „Das grüne Haus soll noch grüner werden!“;

Hi oliver,
na klar geht sowas.

$string = "Das blaue Haus soll noch blauer werden!";
$string =~ s/blau/grün/g;
print "$string\n";

Der ‚Trick‘ hierbei ist das ‚g‘ (globales Ersetzen im String). Natuerlich kann man auch hier noch was verbessern (z.B. Testen auf Wortgrenzen, d.h. nur Worten, die mit dem String anfangen, werden ersetzt usw. usw.). Der Phantasie sind wieder keine Grenzen gesetzt…

Gruß
bernhard

hallo bernhard,
vielen dank für deine hilfe.
das war ja einfach zu lösen, aber ich glaube,
dass ich ein schlechtes beispiel gewählt habe.

ich versuche nochmal ein anderes beispiel.

$myVar = „variabler Inhalt“;

$string = „Das soll mal „.$myVar.“ werden“;
daraus soll werden:
$string = „Das soll mal {b}“.$myVar."{/b} werden";

die variable ‚$myVar‘ hat aber immer einen dynamischen inhalt.

ist das auch irgendwie möglich?

vielen dank!

gruß
Oliver

$myVar = „variabler Inhalt“;

$string = „Das soll mal „.$myVar.“ werden“;
daraus soll werden:
$string = „Das soll mal {b}“.$myVar."{/b} werden";

die variable ‚$myVar‘ hat aber immer einen dynamischen inhalt.

Hi Oliver,

ich vermutete einfach mal, dass ein Teilstring ‚’ oder '‘ - oder eckige Klammern… - in $myVar nicht vorkommt (macht das Leben um einiges einfacher…)

Also:

#ersetze alles in eckigen Klammern durch dasselbe in geschweiften...

$string =~ s/
 \[ # Start: '['
 ( # Beginn grouping -\> $1
 [^]]+ # Folge (1 oder mehr) von Nicht-]
 ) # Ende grouping
 \] # Ende: schliessende ]
 /{$1}/gx; # x: Kommentare im RE, g: globales 
 # Ersetzen...

Hoffe, das hilft.
Bernhard

vielen dank bernhard,
das war genau was ich gesucht habe.

schöne grüße
oliver