2009-10-21 11 views
20

Was bedeutet der Unterstrich im folgenden Regex?Was bedeutet das _ in [a-zA-Z0-9_]?

[a-zA-Z0-9_]

Die _ scheint keinen Unterschied zu machen, damit ich nicht verstehe den Zweck davon.

+10

BTW, '[a-zA-Z0-9_]' == '\ w' – Tordek

+7

Bitte siehe [perlre] (http://perldoc.perl.org/perlre.html) und [perlref] (http: //perldoc.perl.org/perlrefere.html). Ja, ich habe gerade zu "RTFM" gesagt. –

+4

Tordek: nein [a-zA-Z0-9_]! = \ W, nicht in Perl. –

Antwort

44

Es bedeutet, den Unterstrich zusätzlich zu Kleinbuchstaben, Großbuchstaben und Zahlen zu verwenden.

15

Es bedeutet, dass der Unterstrich auch übereinstimmt.

65

Der Unterstrich bedeutet einen Unterstrich.

+3

zu meinen konnte mit Ihrer Aussage kein einziges Problem finden; es ist völlige Einfachheit und Logik ist über jeden Zweifel erhaben :-) +1 – paxdiablo

+12

Und noch nie war die rep-Kappe so leicht zu treffen ... – Ether

9

Mit Ausnahme von Zeichenfolgen ([., [: und [=), Bereich Ausdrücke (zB [a-z]) und der Zirkumflex am Anfang ([^), jedes Zeichen innerhalb eines Klammerausdrucks bedeutet das Zeichen selbst, einfach so unterstreichen.

Als eine Randnotiz wird dieser Ausdruck üblicherweise durch \w (Wortzeichen, Ignorieren von Unicode und Gebietsschema) dargestellt und wird häufig verwendet, um den Satz von Zeichen zu definieren, die in Variablennamen verwendet werden dürfen.

+3

\ w hängt vom Gebietsschema ab und wird auch Unicode-Zeichen entsprechen –

+0

Für die meisten Sprachen '[a-zA- Z _] [a-zA-Z0-9 _] * 'ist wahrscheinlich für Variablennamen genauer, da sie das Starten mit Ziffern verbieten. –

+0

Und viele Sprachen erlauben heutzutage auch andere Skripte für Variablennamen. Also viel Spaß mit Unicode-Klassen auch :-) – Joey

11

Reguläre Ausdrücke sind in perlre dokumentiert. Das ist der richtige Ort, wenn Sie Fragen zu regulären Ausdrücken haben. Die Regular-Expressions.info Website ist auch sehr hilfreich.

Um Ihnen den Einstieg zu erleichtern, wird das, was Sie gerade betrachten, eine "Zeichenklasse" genannt.

+1

+1 zur Beantwortung * mehr * als die unmittelbare Frage. – paxdiablo

+0

Danke. Nur wenn wir alle so tolerant gegenüber den Neulingen wären. – unj2

+0

Für jemanden, der zu regulären Ausdrücken in Perl neu ist, empfehle ich immer zuerst "perldoc perlrequick". Es ist viel freundlicher als "perldoc perlre" - vor allem, weil es nicht so überwältigend detailliert ist. – Telemachus