2010-02-25 13 views
39

Nie jestem pewien, w jaki sposób mogę osiągnąć to wyrażenie dopasowania. Obecnie używam,Listy, liczby, kreski i podkreślenia Regex

([A-Za-z0-9-]+) 

... która pasuje do liter i cyfr. Chciałbym również dopasować na myślnikach i podkreślenia w tym samym wyrażeniu. Ktoś wie jak?

Chciałbym być w stanie dopasować PRODUCT_NAME i produktu nazwa-

Odpowiedz

70

Wystarczy uciec kreski do zapobiec ich interpretować (nie sądzę podkreślenia potrzeby uciekających, ale nie zaszkodzi). Nie mówisz, którego regex używasz.

([A-Za-z0-9\-\_]+) 
+0

Jako kontynuację, w jaki sposób mogę zastosować powyższe zasady, wykluczając okresy? Chciałbym zignorować, na przykład, image.png –

+4

@George: To wyrażenie regularne już nie pasuje do kropek. –

+1

@George Proszę nie pytać o dalsze pytania, z wyjątkiem nowych pytań. Komentarze nie są do tego; odpowiedzi nie są na to; jeśli masz nowe pytanie, zadaj nowe pytanie. –

21

wyrażenia powinny już pasuje do kreski, ponieważ ostateczna - nie będą interpretowane jako operator zakresu (ponieważ zakres nie ma koniec). Aby dodać podkreślenia jak dobrze, spróbuj:

([A-Za-z0-9_-]+) 
9

zależności od wariantu regex, może być w stanie to zrobić po prostu tak:

([\w-]+) 

Ponadto, prawdopodobnie nie potrzebują nawiasy chyba że jest to część większej ekspresji.

+0

Jest to plik .htaccess, więc potrzebuję nawiasów, ponieważ, jak powiedziałeś, jest w większym wyrażeniu :) –

+0

To działało dla mnie, i myślę, że jest trochę czystszy przy użyciu skrótu "słowo". Właściwie użyłem [\ w -] * –

0

Naprawdę można dopasować wszystkie te postacie, ale bezpieczniej jest uciec z -, aby było jasne, że jest brane dosłownie.

Jeśli używasz POSIX variant można zdecydować się na stosowanie:

([[:alnum:]\-_]+)

ale ponieważ jesteś tym podkreślenia, że ​​po prostu użyć:

([\w\-]+)

(działa w wszystkie warianty)

Powiązane problemy