Was macht \ D in regulären Perl-Ausdrücken?

8

In einigen Code, den ich behalte, habe ich den Ausdruck gefunden:

%Vor%

Was mich verblüfft ist, dass es sowohl Gerät als auch Gerät entspricht!

Ich habe keine Erwähnung von \ D in der Dokumentation gefunden, nur \ d.

Kann jemand bitte klären ...

    
Roger 20.06.2011, 12:13
quelle

3 Antworten

19

\D ist die Negation von \d , d. h. es entspricht allem, was keine Ziffer ist.

    
sepp2k 20.06.2011, 12:14
quelle
11

In diesem Regex sieht \D wie ein Tippfehler aus. Es funktioniert nur für d und D , nur weil es mit jedem Zeichen übereinstimmt, das keine Ziffer ist (0-9).

Eine geeignetere Regex (wenn die Absicht darin besteht, "Gerät" oder "Gerät" zu entsprechen) ist:

%Vor%

Die Option s ist auch ein bisschen seltsam. Von perldoc perlop

%Vor%

Und es gibt kein solches Matching in dieser Zeile.

    
TLP 20.06.2011 13:07
quelle
2

Sie haben bereits eine Antwort. Es gibt jedoch Dokumentation in perldoc perlrecharclass . Siehe die Informationen zu Backslash-Sequenzen .

Es wird auch in perldoc perlrequick und in der regulären perldoc perlretut unter Zeichenklassen verwenden . In diesen beiden Abschnitten ist es jedoch eher vergraben.

    
David W. 20.06.2011 15:05
quelle

Tags und Links