Schrift
[thread]9165[/thread]

Ausdrücke parsen, die \ enthalten



<< >> 5 Einträge, 1 Seite
dominicn
 2007-07-07 00:16
#78288 #78288
User since
2003-08-08
327 Artikel
BenutzerIn
[default_avatar]
Hallo,

leider ist mir kein passenderer Threadtitel eingefallen. Ich habe z.B. den folgenden Inhalt in einem Skalar stehen:
Code: (dl )
Das ist ein "\"toller" Test.

Daraus soll folgendes werden:
Code: (dl )
Das ist ein "toller Test.

Wie kann ich das in Perl mit RexExp umsetzen?
renee
 2007-07-07 00:59
#78289 #78289
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Code (perl): (dl )
1
2
$string =~ s/\\"//g;
print $string;
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
PerlProfi
 2007-07-07 01:13
#78290 #78290
User since
2006-11-29
340 Artikel
BenutzerIn
[default_avatar]
Sieht für mich eher danach aus, als möchte er, dass der \ alle Zeichen innerhalb von Anführungsstrichen escaped, mir fällt leider nichts besseres ein, aber so würde ich es machen:
Code: (dl )
1
2
3
4
5
{
my $escape = "\\";
my $dood = sub { $a=pop;$a=~s/\Q$escape\E(.)/$1/g;$a };
$string =~ s{(?<!\Q$escape\E)"(.*?)(?<!\Q$escape\E)"}{$dood->($1)}eg;
}


MfG
dominicn
 2007-07-07 01:20
#78291 #78291
User since
2003-08-08
327 Artikel
BenutzerIn
[default_avatar]
ich möchte die normalen Anführungsstriche einfach loswerden und \" durch " ersetzen. Ein einfaches $_ =~ s/\"//g; würde da mist bauen.

Das was PerlProfi geschrieben hat, scheint für mich zu funktionieren ... ich versuche gerade, zu verstehen wie es läuft.
PerlProfi
 2007-07-07 01:29
#78292 #78292
User since
2006-11-29
340 Artikel
BenutzerIn
[default_avatar]
So wie du es jetzt beschrieben hast, würde ich es so machen:
Code: (dl )
1
2
3
4
5
{
my $escape = "\\";
$string =~ s/(?<!\Q$escape\E)"//g;
$string =~ s/\Q$escape\E(?>")/"/g;
}

Das oben achtet noch darauf nur Escapesequenzen innerhalb von Anführungsstrichen zu ersetzen, dieses hier entfernt einfach alle "normalen" Anführungsstriche und alle \ auf die Anführungsstriche folgen.

edit: " vergessen...

MfG\n\n

<!--EDIT|PerlProfi|1183757505-->
<< >> 5 Einträge, 1 Seite



View all threads created 2007-07-07 00:16.