Thread Hilfe zu Regex (8 answers)
Opened by rooney10 at 2011-03-22 16:43

Linuxer
 2011-03-23 00:20
#146809 #146809
User since
2006-01-27
3891 Artikel
HausmeisterIn

user image
Hi,

was heißt "Funktioniert aber nicht richtig..."? Gibt es Warnungen oder Fehlermeldungen?

Ein Pattern /\\includegraphics.*\{(.+?)\}/gc) finde ich suboptimal, denn es kann auch auf (mögliche) Befehle wie \includegraphicsExtended{args} zutreffen (was ja ein selbst definiertes Kommando sein könnte).

Du kannst den Teilausdruck mit den eckigen Klammern optional machen, in dem Du ihn mit  (?: ausdruck )?  klammerst; Beispiel:


Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#! /usr/bin/perl
use strict;
use warnings;

my $text = do { local $/; <DATA> };
my @matches;

while ( $text =~ m<\\includegraphics(?:\[.*?\])?\{(.+?)\}>gc ) {
    push @matches, $1;
}

{
    local $\ = local $, = $/;
    print @matches;
}

__DATA__
Schau mal dies: \includegraphics{bild1.jpg}
Oder dieses: \includegraphics[2,"second"]{bild2.jpg}
Aber nicht das hier: \includegraphicsNew{no_pic.jpg}
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 Hilfe zu Regex