Piszę wyrażenie regularne w Objective-C.Co robi ? (znak zapytania z ukośnikiem odwrotnym) oznacza sekwencję ucieczki?
Sekwencja specjalna \w
jest niedozwolona i generuje ostrzeżenie, dlatego wyrażenie regularne /\w/
musi być napisane jako @"\\w"
; sekwencja wyjściowa \?
jest valid, apparently, i nie wysyła ostrzeżenia, więc wyrażenie regularne /\?/
musi być zapisane jako @"\\?"
(tj. odwrotny ukośnik musi być uniknięty).
Znaki zapytania nie są niewidoczne jak \t
lub \n
, więc dlaczego \?
jest prawidłową sekwencją specjalną?
Edit: W celu wyjaśnienia, nie pytam o kwantyfikatorem, pytam o sekwencji ciąg ewakuacji. Oznacza to, że ten nie emituje ostrzeżenie:
NSString *valid = @"\?";
Natomiast ten nie emitować ostrzeżenie ("nieznanej sekwencji ucieczki '\ w'"):
NSString *invalid = @"\w";
Oznacza to, że próbujesz dopasować (w zależności od funkcji) dosłowne "?"? – Jerry
Możliwy duplikat [Dlaczego "\?" sekwencja ucieczki w C/C++?] (http://stackoverflow.com/questions/19374878/why-is-an-escape-sequence-in-cc) (Objective-C dziedziczy tę funkcję od C, więc to jest faktycznie duplikat.) –