Thread Regex funktioniert nicht (3 answers)
Opened by Rifki at 2018-02-20 17:18

FIFO
 2018-02-20 22:14
#188020 #188020
User since
2005-06-01
469 Artikel
BenutzerIn

user image
Das hat mit Windows vs. Linux erstmal nichts zu tun. In Deiner Variablen $zwischen steht eben was, das mit "**" beginnt. Im RegEx-Suchmuster wird die Variable interpoliert und die zwei * als "nested quantifiers" moniert.
Abhilfe (hier falsch, siehe unten):
Code (perl): (dl )
@funde_liste = grep { m/^ \Q ${zwischen}\E \t/xi } @inhalt_pruef;


\Q ... \E maskiert die "special chars" (hier die *).
Tip am Rande: Ich habe mir angewöhnt, Variablen innerhalb RegExes immer in der Form ${foo} statt $foo zu schreiben, das macht vieles klarer :)

Korrektur
Auf das \Q darf nicht ein Leerzeichen folgen, der /x-Modifier nützt da nichts.
Richtig ist:
Code (perl): (dl )
@funde_liste = grep { m/^\Q${zwischen}\E\t/i } @inhalt_pruef;

oder quotemeta():
Code (perl): (dl )
1
2
$zwischen = quotemeta $zwischen;
@funde_liste = grep { m/^${zwischen}\t/i } @inhalt_pruef;

Last edited: 2018-02-20 23:52:38 +0100 (CET)
Everyone knows that debugging is twice as hard as writing a program in the first place. So if you're as clever as you can be when you write it, how will you ever debug it? -- Brian Kernighan: "The Elements of Programming Style"

View full thread Regex funktioniert nicht