Thread Regex über mehrere Zeilen (10 answers)
Opened by kameltreiber at 2012-01-18 11:26

Linuxer
 2012-01-18 15:50
#155529 #155529
User since
2006-01-27
3890 Artikel
HausmeisterIn

user image
Hm, keine Ahnung auf die Schnelle. Hab mal rumprobiert und folgendes geraten:

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#! /usr/bin/perl
use strict;
use warnings;
use utf8;                           # weil Beispieldaten utf8 kodiert sind

my @collected;
while ( my $line = <DATA> ) {

    # Ausgabe wird gemacht, wenn die aktuelle Zeile nur aus Punkten besteht, oder
    # wenn die Zeile mit zwei Zeichenketten aus Punkten, zwischen denen ein oder mehr
    # Leerzeichen liegen, endet.
    #
    if ( $line =~ m/(?:^|[.]+\s+)[.]+$/ ) {
        chomp @collected;
        push @collected, $line;

        # ">>> " fuer Produktiv-Code entfernen
        print ">>> @collected";
        @collected = ();
    }
    else {
        push @collected, $line;
    }
}

# Beispieldaten
__DATA__
Eingänge, 12 Bit, 0(4)
...20mA (Stecker Typ E),
gemäss Leistungsbeschrieb
ATS 03, komplett betriebsbereit,
verdrahtet inkl. Klemmen
31 158    St ......................     .....................
R  912.553.124     Analoges Ausgangsmodul mit
galvanischer Trennung, 4
Ausgänge, 10 Bit, 0(4) ...
20mA (Stecker Typ E),
gemäss Leistungsbeschrieb
ATS 03, komplett betriebsbereit,
verdrahtet inkl. Klemmen
31 84    St ......................     .....................
R  912.553.125     DALI Modul
gemäss Leistungsbeschrieb
ATS 03, komplett betriebsbereit,
verdrahtet inkl. Klemmen 31 160    St ......................
.....................
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!

View full thread Regex über mehrere Zeilen