ugrás a tartalomhoz

perl rmintaillesztés

Imre84 · 2013. Feb. 13. (Sze), 13.28
Sziasztok!

Van 1 string:

Ez itt egy string
aminek kell egy része
ez az: 123456
utolsó sor

Ebből nekem az 123456 kell, de ez minden futásnál másik szám, a többi ugyanaz. Meg tudom csinálni úgy, hogy tömbbe teszem, bejárom, és amikor az elem így kezdődik: "ez az:" akkor kettévágom, de ennél szerintem sokkal egyszerűbben meg lehet oldani reguláris kifejezéssel. Kérdésem az lenne hogy hogyan?
 
1

Én így csinálnám:$adat =

kuka · 2013. Feb. 13. (Sze), 13.43
Én így csinálnám:

$adat = <<VEGE;
Ez itt egy string
aminek kell egy része
ez az: 123456
utolsó sor
VEGE

@szam = $adat =~ m/ez az: (\d+)/;

print $szam[0];
Bár lehet így is:

$adat = <<VEGE;
Ez itt egy string
aminek kell egy része
ez az: 123456
utolsó sor
VEGE

($szam = $adat) =~ s/.*ez az: (\d+).*/$1/s;

print $szam;
2

nem működik.

Imre84 · 2013. Feb. 13. (Sze), 17.32
Lehet, hogy én rontok el valamit, de nekem nem működik. Mindkét variáció az egészet visszaadja a teljes stringet. Nem tudom az számít-e, hogy a sorok végén elvileg sortörés van.
3

Úgy érted, hogy ha ezt

kuka · 2013. Feb. 13. (Sze), 17.55
Úgy érted, hogy ha ezt lefuttatod

#!/usr/bin/perl

$adat = <<VEGE;
Ez itt egy string
aminek kell egy része
ez az: 123456
utolsó sor
VEGE

print "=== Bemenő adat ===\n$adat\n=== vege ===\n\n";

@szam = $adat =~ m/ez az: (\d+)/;

print "=== Szám 1. módszer ===\n$szam[0]\n=== vege ===\n\n";

($szam = $adat) =~ s/.*ez az: (\d+).*/$1/s;

print "=== Szám 2. módszer ===\n$szam\n=== vege ===\n\n";
Akkor nem ezt írja ki?

=== Bemenő adat ===
Ez itt egy string
aminek kell egy része
ez az: 123456
utolsó sor
=== vege ===
=== Szám 1. módszer ===
123456
=== vege ===
=== Szám 2. módszer ===
123456
=== vege ===
4

Köszönöm!

Imre84 · 2013. Feb. 14. (Cs), 10.39
A megoldásod jó, csak én bénáztam!