Czy w klasie znaków (nawiasach kwadratowych) w wyrażeniu regularnym należy zastosować znaki zmiany znaczenia?


97

Kropka .w wyrażeniu regularnym pasuje do dowolnego pojedynczego znaku. Aby wyrażenie regularne pasowało do kropki, kropka musi zostać zmieniona:\.

Zwrócono mi uwagę, że w nawiasach kwadratowych []nie trzeba uciekać kropki. Na przykład wyrażenie: [.]{3}dopasuje ...ciąg.

Naprawdę nie? A jeśli tak, czy dotyczy to wszystkich standardów wyrażeń regularnych?


Tak, to prawda, że ​​DOT (i większość innych znaków specjalnych) nie musi być chroniona przed ucieczką w klasie znaków.
anubhava

3
Nie ma „standardu” dla składni wyrażeń regularnych.
BoltClock

3
@BoltClock jest kilka: posix, posix extended, perl. Zobacz en.wikipedia.org/wiki/Regular_expression#Standards
Dariusz

1
@Dariusz byłeś tym, który przegłosował mnie, bo myślałeś, że się mylę? jeśli tak, chcę odzyskać moje 2 punkty :)
Paul Samsotha

@peeskillet tak, byłem, stoję poprawione. Dzięki i przepraszam.
Dariusz

Odpowiedzi:


136

W klasie znaków (nawiasy kwadratowe) dowolny znak oprócz ^, -, ]czy \jest dosłowne.

Ta strona internetowa jest doskonałym źródłem informacji i zawiera wiele informacji na temat niuansów różnych odmian wyrażeń regularnych. http://www.regular-expressions.info/refcharclass.html


3
To naprawdę zależy od tego, jak obsługuje to język, ale w przypadku większości języków jest to prawda.
Patrick Oscity,

40
-jest również dosłowne, jeśli jest to ostatnia wartość
Pedro Lobito

16
A ^ jest dosłowne, jeśli nie jest to pierwsza postać
Nigel B. Peck

1
Jeśli $ wygląda jak zmienna, również należy ją zmienić. Np .: [$.]
W3Coder

1
@PedroLobito A jeśli to pierwszy, myślę
Tim Malone,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.