perl regexp frage

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

perl regexp frage
hat jmd vielleicht eine idee wie folgende strings bearbeiten kann?

z:\meintest@@\blablubber\dumdidum.doc@@\main\12
z:\whatever\bimbambum.pdf@@\main\23

jetzt brauch ich einen regexp der zugleich aus dem 1sten \blablubber\dumdidum.doc und ausm 2ten \whatever\bimbambum.pdf rausholen kann. irgendwie gelingt mir da nix

$var =~ s/((\\(\w|\d|_|-)+\\)*\....)@@\\main\\\d+$/$1/;

spontan ist mir nur dieses monster eingefallen (welcher nicht mal gscheid geht)… das geht sicher auch viel einfacher/eleganter aber ich steh irgendwie aufn schlauch …


Hmm,

ich weiss nicht, ob das hier uebersichtlicher und v. a. besser fuer deinen Fall (welchen ich ausser deiner Beschreibung nicht kenne) geeignet ist:

$a =~ s/@@[^@]*$//;
$a =~ s/\w:(\\\w*@@)*//;

schneidet erst hinten und dann vorne ab…


vielleicht so?

[quote]kabel@debian:~$ perl
push @s, ‘z:\meintest@@\blablubber\dumdidum.doc@@\main\12’;
push @s, ‘z:\whatever\bimbambum.pdf@@\main\23’;
for(@s) {
@t= split “@@”;
@t==2 and do { print “$t[0]\n”; };
@t == 3 and do { print “$t[1]\n”; };
}

\blablubber\dumdidum.doc
z:\whatever\bimbambum.pdf
kabel@debian:~$ [/quote]


Du musst beim zweiten noch das z: loswerden,
aber ansonsten erkennt man den Perl-Profi,
der es einfach macht, wenn man es auch kompliziert machen kann :]…


Ich habe einen einzelnen Ausdruck:

#!/usr/bin/perl
$s1 = ‘z:\meintest@@\blablubber\dumdidum.doc@@\main\12’;
$s2 = ‘z:\whatever\bimbambum.pdf@@\main\23’;

$s3 = ($s1 =~ /^z:(.@@)?(.+?)@@\main/)[1];
$s4 = ($s2 =~ /^z:(.
@@)?(.+?)@@\main/)[1];

print “$s3\n”;
print “$s4\n”;


Womit wir von den Profis zu den Göttern gekommen wären.

DEFINITION


coole sache vielen dank