2009-10-21 8 views
20

Co oznacza podkreślenie w następującym wyrażeniu regularnym?Co oznacza słowo _ w [a-zA-Z0-9_]?

[a-zA-Z0-9_]

_ wydaje się mieć żadnego znaczenia, więc nie zrozumieć cel niego.

+10

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

+7

Patrz [perlre] (http://perldoc.perl.org/perlre.html) i [perlref] (http: //perldoc.perl.org/perlreref.html). Tak, właśnie powiedziałem "RTFM". –

+4

Tordek: no [a-zA-Z0-9_]! = \ W, nie w Perlu. –

Odpowiedz

44

Oznacza to dopasowanie znaku podkreślenia oprócz małych liter, wielkich liter i cyfr.

15

Oznacza to dopasowanie podkreślenia.

65

Podkreślenie oznacza podkreślenie.

+3

Spróbuj jako potęgę, ja nie mogłem znaleźć żadnego problemu z Twoim wyciągiem; to jest absolutna prostota, a logika jest bez zarzutu :-) +1 – paxdiablo

+12

I nigdy wcześniej nie było rep cap tak łatwo trafić ... – Ether

9

Z wyjątkiem sekwencji znaków ([., [:, a [=), zakres wyrażenia (np [a-z]) i daszkiem na początku ([^) każdy charakter wewnątrz wyrazu wspornika oznacza sam charakter, tak jak ten podkreślnik.

Na marginesie, to wyrażenie jest zwykle reprezentowane przez \w (znak słowny, ignorując kodowanie Unicode i ustawienia narodowe) i jest powszechnie używane do definiowania zestawu znaków, które mogą być używane w nazwach zmiennych.

+3

\ w zależy od ustawień regionalnych, a także będzie pasować do znaków Unicode –

+0

Dla większości języków, '[a-zA- Z _] [a-zA-Z0-9 _] * 'jest prawdopodobnie bardziej dokładny dla nazw zmiennych, ponieważ zabraniają zaczynać się cyframi. –

+0

Obecnie wiele języków dopuszcza również inne skrypty dla nazw zmiennych. Więc baw się dobrze z klasami Unicode :-) – Joey

11

Wyrażenia regularne są dokumentowane w perlre. To miejsce do sprawdzenia, gdy masz pytanie dotyczące wyrażeń regularnych. Strona Regular-Expressions.info jest bardzo pomocna.

Na początek, to, na co patrzysz, nazywa się "klasą postaci".

+1

+1 za odpowiedź * więcej * niż natychmiastowe pytanie. – paxdiablo

+0

Dziękuję. Tylko jeśli wszyscy byliśmy tak tolerancyjni wobec początkujących. – unj2

+0

Dla kogoś nowego w wyrażeniach regularnych w Perlu, zawsze polecam najpierw "perldoc perlrequick". Jest o wiele bardziej przyjazny niż "perldoc perlre" - głównie dlatego, że nie jest tak przytłaczająco szczegółowy. – Telemachus