TOM: Substitution von &

Hallo Volk!

Mein Problem:
& durch & ersetzen

Meine Idee:
$GetString =~ s/&/&/msg; (msg wegen: es handelt sich um einen mehrzeiligen ausdruck.)

Mein Output
& wird nun zu: &

Find ich nicht so tool.
Liegt das vielleicht an Windows oder so....

Gruß
tom

  1. Hi,

    Mein Problem:
    & durch & ersetzen

    mein Problem: Dieses Forum ersetzt automatisch & durch &... ;-)

    Tu mir bitte den Gefallen, und schreibe Dein Problem noch mal. Laß beim "& amp;" am besten einfach das "&" weg - wir verstehen es dann auch so *g* (Oder mach es wie ich und setze ein Leerzeichen dazwischen.)

    Meine Idee:
    $GetString =~ s/&/&/msg; (msg wegen: es handelt sich um einen mehrzeiligen ausdruck.)

    /m brauchst Du nur, wenn Du ^ oder $ verwendest, /s brauchst Du nur, wenn Du den Punkt auch auf [\n\r] matchen lassen willst. /g reicht also.

    Mein Output
    & wird nun zu: &

    Ich nehme an, Du meinst ein doppeltes "amp;", wo Du nur eins erwartet hast, richtig? Das sollte eigentlich kein Problem sein. Bist Du sicher, daß Du nur an einer einzigen Stelle die Ersetzung durchführst?

    Cheatah

  2. Also nochmal:
    Hallo Volk!

    Mein Problem:
    & durch &_amp ersetzen

    Meine Idee:
    $GetString =~ s/&/&_amp/g;

    Mein Output
    & wird nun zu: &_amp;

    Find ich nicht so tool.
    Liegt das vielleicht an Windows oder so....

    Gruß
    tom

    Zusammenfassung:
    ich gebe & ein. Dann mache
    ich meine Subst. (=~s/&/&_amp/g;)
    und raus kommt
    &_amp;amp (und ich habe doch nur ein & eingegeben.)

    tom

    1. Hallo Volk!

      Hallo Herr und Gebieter ;-)

      [...]
      »»Zusammenfassung:
      »»ich gebe & ein. Dann mache
      »»ich meine Subst. (=~s/&/&_amp/g;)
      »»und raus kommt
      »»&_amp;amp (und ich habe doch nur ein & eingegeben.)

      Das schaut so aus, als wenn Du versuchst in einem bestehenden HTML-Text (*g*) alle vorkommenden Sonderzeichen in deren HTML-Entities umzuwandel. Dabei wird natürlich auch das & von & in & umgewandelt ;-)
      Was Du brauchst ist also eine: "zero-width negative look-ahead assertion".

      $text =~ s/&(?!amp;)/&/g;
                    ^............hier ist der Zauberstab ;-): findet & nur, wenn kein amp; folgt.

      Gruß AlexBausW