Это регулярное выражение соответствует следующему:
- A
"
символ, - С последующим любой комбинацией одного или нескольких из следующих:
[^\"\\]
- Любой символ, отличный от "
или \
\\['"?\\abfnrtv]
- A \
, за которым следует любой из '
, "
, ?
, \
, a
, b
, f
, n
, r
, t
или v
. \\[0-7]{1,3}
- A \
, за которыми следуют от одной до трех восьмеричных цифр. \\[Xx][0-9a-fA-F]+
- A \
, за которым следует X
или x
, за которым следуют одна или несколько шестнадцатеричных цифр. {UCN}
, которая расширяется до (\\u[0-9a-fA-F]{4}|\\U[0-9a-fA-F]{8})
- Любой из следующие: \\u[0-9a-fA-F]{4}
- A \
, за которым следует u
, за которым следуют четыре шестнадцатеричные цифры \\U[0-9a-fA-F]{8}
- A \
, за которыми следует U
, за которыми следуют восемь шестнадцатеричных цифр
- С последующим закрывающим символом
"
Обратите внимание, что на самом деле это неправильный шаблон для сопоставления всей строки C ++ литералы, потому что
- Это делает не соответствует пустой строке (
""
) - Шестнадцатеричные escape-коды должны начинаться со строчной буквы
x
. Лучшим шаблоном для их сопоставления будет \\x[0-9a-fA-F]+
Для получения дополнительной информации о том, что означают все escape-последовательности C ++, см. эту страницу .
To ответьте на указанные c вопросы:
\
обозначает escape-последовательность, которая обрабатывается другими опциями, а неотключенный "
означает конец строкового литерала. Родовое c совпадение «любой символ» не соответствует ни одному из этих символов, так что они могут быть сопоставлены с другими частями выражения. - Ответ выше:
\\[0-7]{1,3}
означает \
, за которым следует от одной до трех восьмеричных цифр. - Ответ выше:
\\[Xx][0-9a-fA-F]+
означает \
, за которым X
или x
следует одна или несколько шестнадцатеричных цифр UCN
- это короткая для универсального имени персонажа. Он обозначает символ Unicode, но ничего не говорит о его кодировке.