[Regex] (Tteil)ergebnisse in Array speichern

[Regex] (Tteil)ergebnisse in Array speichern

am 13.07.2007 20:22:42 von Stefan Kubina

Hallo zusammen,

ich habe mir ein RegEx gebastelt, daß mir den gewünschten Text
rausfiltert.
Ich möchte nun alle Fundstellen des Textes in ein Array speichern, um
damit dann arbeiten zu können. Leider blicke ich bei den
vordefinierten Variabeln von Perl nicht so richtg durch.

RegEx: $string =~ /(^\s*\+?-{3,}\+?)(\s*!+\s*.*\s*!)/gm;

In $string ist der gesamte Beispielext als String gespeichert.

Beisieltext - Anfang:
+----------------------------------------------------------- --------------------------------------------------
! NR_BUCHUNG ! COD_MANDANT ! NR_KONTO ! COD_KONTOTYP ! NR_BELEG !
COD_BELEGART ! DAT_BUCHUNG !
+----------------------------------------------------------- --------------------------------------------------
1_! 1703383 ! U ! 138 ! 1 ! 2894639 ! 1038 ! 01.10.2003 !
2_! 1703382 ! U ! 138 ! 1 ! 2894639 ! 1038 ! 01.10.2003 !
3_! 1703222 ! U ! 138 ! 1 ! 48527 ! 1038 ! 04.11.2003 !

+----------------------------------------------------------- --------------------------------------------------
1PAGE 2
------------------------------------------------------------ ------------------------------------------------------------ -----
! COD_WAEHRUNG ! NR_ABSTIMM ! NR_JOURNAL ! COD_BUCH_TYP ! COD_VORGANG
! COD_VORG_DETAIL ! COD_BUCH_DETAIL ! COD_ZAHLWEG !
------------------------------------------------------------ ------------------------------------------------------------ -----
1_! 978 ! 1038 ! 0 ! 1 ! 60 ! 90 ! 0 ! 30 !
2_! 978 ! 1038 ! 0 ! 1 ! 60 ! 90 ! 0 ! 30 !
3_! 978 ! 1038 ! 0 ! 1 ! 60 ! 90 ! 0 ! 30 !

1PAGE 3
------------------------------------------------------------ ------------------------------------------------------------ -----
! COD_ZAHL_DETAIL ! ID_BUOBJ ! DAT_FAELLIG ! NR_PERIODE !
ID_GESCHAEFTSJAHR ! DAT_GUELTIG_AB ! DAT_GUELTIG_BIS !
------------------------------------------------------------ ------------------------------------------------------------ -----
1_! 0 ! ! 01.10.2003 ! 10 ! 2003 ! 01.01.0001 ! 01.01.0001 !
2_! 0 ! ! 01.10.2003 ! 10 ! 2003 ! 01.01.0001 ! 01.01.0001 !
3_! 0 ! ! 04.11.2003 ! 11 ! 2003 ! 01.01.0001 ! 01.01.0001 !

Beispieltext - Ende


Wie bekomme ich nun alle Funndstellen (Der Text ist länger als hier
angegeben) in ein Array ?

Danke für Hinweise.

Ich arbeite mit perl 5.8..820 auf Windoof
MfG Stefan Kubina
--
"Entwededer man lebt, oder man ist konsequent." Erich Kästner
Homepage: http://www.JustMe69.de - http://www.SKubIO-Media.de
ICQ:#45202585

Re: [Regex] (Tteil)ergebnisse in Array speichern

am 13.07.2007 21:21:35 von Frank Seitz

Stefan Kubina wrote:

> ich habe mir ein RegEx gebastelt, daß mir den gewünschten Text
> rausfiltert.

Welchen?

> Ich möchte nun alle Fundstellen des Textes in ein Array speichern, um
> damit dann arbeiten zu können.

Die Fundstellen bekommst Du geliefert, indem Du die Teilausdrücke
im Pattern klammerst und den Returnwert an ein Array zuweist.

Grüße
Frank
--
Dipl.-Inform. Frank Seitz; http://www.fseitz.de/
Anwendungen für Ihr Internet und Intranet
Tel: 04103/180301; Fax: -02; Industriestr. 31, 22880 Wedel

Re: [Regex] (Tteil)ergebnisse in Array speichern

am 14.07.2007 10:18:53 von Stefan Kubina

>Stefan Kubina wrote:
>
>> ich habe mir ein RegEx gebastelt, daß mir den gewünschten Text
>> rausfiltert.
>Welchen?
Ähm... Suchtext und RegEx steht im 1 Post

>Die Fundstellen bekommst Du geliefert, indem Du die Teilausdrücke
>im Pattern klammerst und den Returnwert an ein Array zuweist.
Yep - was mir fehlte war noch ne while-Schleife - ich wollte nicht nur
den Inhalt _einer_ Gruppe, sondern alle Vokommen einer (oder
mehrerer) Gruppen bekommen.

while ($string =~ $regex)
{
push(@array, "$1");
}

--> d.h. dieses Problem hat sich erledigt ;-)
--
Don't fear, it's just me...
Homepage: http://www.JustMe69.de - http://www.SKubIO-Media.de
ICQ:#45202585

Re: [Regex] (Tteil)ergebnisse in Array speichern

am 15.07.2007 00:37:55 von Roman Racine

Stefan Kubina wrote:

> Wie bekomme ich nun alle Funndstellen (Der Text ist länger als hier
> angegeben) in ein Array ?

Zu dem, was Frank dir schon geschrieben hat: Eventuell wäre die Funktion
split() etwas für dich.

Gruss

Roman°
--
IRC-Freenode: #usenet-friends
http://www.usenet-friends.ch.vu/

Re: [Regex] (Tteil)ergebnisse in Array speichern

am 15.07.2007 11:04:38 von Stefan Kubina

Am Sun, 15 Jul 2007 00:37:55 +0200, schrieb Roman Racine
>Zu dem, was Frank dir schon geschrieben hat: Eventuell wäre die Funktion
>split() etwas für dich.

In dem Fall eher nicht, da reichen ein paar () im RegEx und eine
while-Schleife, die mir das Array füllt.

Danke fürs Mitdenken ;-)

MfG Stefan Kubina
--
Don't fear, it's just me...
Homepage: http://www.JustMe69.de - http://www.SKubIO-Media.de
ICQ:#45202585