Если вы ищете совпадение с «/ api / * / чем угодно» и возвращаете то, что было найдено для *, если это не «добавить»
/^\/api\/(?!add\b)(\w+)(?:\/\w+)*\/?$/i
Каково различие между UTF и UCS.
Кодировка UCS является зафиксированной шириной и отмечена тем, сколько байтов используется для каждого символа. Например, UCS-2 требует 2 байтов за символ. Символы с кодовыми точками вне доступного диапазона не могут быть закодированы в кодировании UCS.
Кодировка UTF является переменной шириной, и отмеченный минимальным числом битов для хранения символа. Например, UTF-16 требует по крайней мере 16 битов (2 байта) на символ. Символы с большими кодовыми точками кодируются с помощью большего числа байтов - 4 байта для звездных символов в UTF-16.
- Внутреннее представление в коде
- Лучшее представление устройства хранения данных (т.е. В файле)
- Лучше всего на проводном транспортном формате (Передача между приложением, которое может быть на различной архитектуре и иметь другую стандартную локаль),
Для современных систем, самого разумного устройства хранения данных и транспортного кодирования UTF-8. Существуют особые случаи, где другие могли бы подходить - UTF-7 для старых почтовых серверов, UTF-16 для плохо записанных текстовых редакторов - но UTF-8 наиболее распространен.
Предпочтительное внутреннее представление будет зависеть от Вашей платформы. В Windows это - UTF-16. В UNIX это - UCS-4. У каждого есть его положительные стороны:
Наконец, некоторые системы используют UTF-8 в качестве внутреннего формата. Это хорошо, если необходимо взаимодействовать с существующим ASCII - или системы ISO-8859-based, потому что ПУСТЫЕ байты не присутствуют посреди текста UTF-8 - они находятся в UTF-16 или UCS-4.
Я предложил бы:
wchar_t
или эквивалентный.Преимущество UTF-8 в устройстве хранения данных и проводных ситуациях состоит в том, что порядок байтов машины не является фактором. Преимущество использования символа фиксированного размера такой как wchar_t
в коде то, что можно легко узнать длину строки, не имея необходимость сканировать его.
Сделайте, чтобы Вы прочитали статью Joel Spolsky об Абсолютном минимуме Каждый Разработчик программного обеспечения Absolutely, Положительно Должен Знать О Unicode и Наборах символов (Никакие Оправдания!)?
Во внутреннем представлении в коде необходимо сделать это и для европейских и для неевропейских символов:
\uNNNN
Символы в диапазоне \u0020 к \u007E и определенному пробелу (например, конец строки) могут быть записаны как обычные символы. Что-либо выше \u0080, если Вы пишете это как обычный символ затем, это скомпилирует только в Вашей кодовой странице (например, хорошо во Франции, но врывающийся Россию, хорошо в России, но врывающийся Японию, хорошо в Китае, но прерывание США, и т.д.).
UTC является Всемирное координированное время, не набор символов (я не нашел набора символов под названием UTC).
Для внутреннего представления можно хотеть использовать wchar_t
для каждого символа и станд.:: wstring для строк. Они используют точно 2 байта для каждого символа, таким образом ища, и произвольный доступ будет быстр.
Для устройства хранения данных, если большинством данных не является ASCII (т.е. код> = 128), можно хотеть использовать UTF-16, который является почти тем же, как сериализировано wstring
и wchar_t
.
Так как UTF-16 может быть с прямым порядком байтов или с обратным порядком байтов, для проводного транспорта, попытаться преобразовать его в UTF-8, который является архитектурно-независимым.