Добавьте поддержку глаголов управления обратным отслеживанием Perl, см.#11205. Отметим, однако, что (*MARK) и операции по знакам в настоящее время не поддерживаются.
Исправьте неправильный конец диапазона при сопоставлении [[:unicode:]], см.#11524.
Изменения POSIX reg_comp API, чтобы не проверять потенциально неинициализированную память, обратите внимание, что код, который ранее был свободен от утечек памяти (но не менее багги, поскольку он не называл reg_free), теперь будет утекать. См.#11472.
Перенесенный в библиотеку номер версии размещает переход в Git. И поскольку у нас есть одно (незначительное) изменение, оно увеличивается с v4 до v5.
Переломное изменение:исправленное поведение<basic_regex<>::mark_count()>в соответствии с существующей документацией,<basic_regex<>::subexpression(n)>изменено в соответствии с#9227
Исправленная проблема с<(?!)>не является действительным выражением, и обновленные документы о том, что представляет собой действительное условное выражение.
Разрывное изменение: пустые выражения и пустые альтернативы теперь разрешены при использовании синтаксиса регулярных выражений Perl. Это изменение было добавлено для совместимости Perl, когда установлено новое<syntax_option_type>no_empty_expressions, тогда старое поведение сохраняется и пустые выражения запрещены. Это вопрос#1081.
Добавлена поддержка выражений стиля Perl ${n} в строках формата (выпуск#2556).
Добавлена поддержка доступа к местоположению подвыражений в строке регулярного выражения (выпуск#2269).
Проблемы совместимости с фиксированным компилятором#2244,#2514и#2458.
Фиксированная настройка конфигурации, позволяющая строить с VC7.1 STLport-4.6.2 при использовании /Zc:wchar_t.
Перенес декларации класса-inline в static_mutex.hpp, чтобы компилятор SGI Irix мог справиться.
Добавлена необходимая стандартная библиотека #включает fileiter.hpp, regex_workaround.hpp и cpp_regex_traits.hpp.
Исправлена ошибка, при которой нежадные повторы могут при определенных странных обстоятельствах повторяться больше раз, чем их максимальное значение.
Исправлено значение, возвращаемое basic_regex<>::empty() от объекта, построенного по умолчанию.
Изменилось определение regex_error, сделав его обратно совместимым с Boost-1.32.0.
Отключены внешние шаблоны для Intel C++ 8.0 и более ранние — иначе могут возникнуть неразрешенные ссылки.
Переписанный код шаблона extern для gcc так, что экспортируются только определенные функции участника: в противном случае могут возникать странные неразрешенные ссылки при связывании и смешивании отладочного и неотладочного кода.
Инициализируйте все данные участников unicode_iterators: это не позволяет GCC выдавать ненужные предупреждения.
Интеграционный код ICU портируется на VC6 и VC7.
Застрахованный код чист в режиме отладки STLport.
Утверждения с фиксированным внешним видом так, что допускаются повторы с фиксированной длиной, и так, что итерация регексов позволяет заглянуть назад до текущего диапазона поиска (в последний матч).
Исправленная странная ошибка с нежадными повторениями в утверждениях вперед.
Позволяет отрицать классы персонажей внутри наборов персонажей.
Регрессия фиксированная таким образом, что [a-z-] снова является действительным выражением.
Исправленная ошибка, которая позволила принять некоторые недействительные выражения.
Полностью переписанный код разбора выражений и поддержка классов черт; теперь соответствует предложению по стандартизации.
разрыв Изменить: Опции синтаксиса, которые могут быть переданы конструкторам basic_regex, были рационализированы. Опция по умолчанию (perl) теперь имеет значение нуля, и теперь четко документировано, какие опции применяются к каким стилям синтаксиса регулярного выражения (perl, POSIX-расширенный, POSIX-базовый и т. Д.). Некоторые из более эзотерических вариантов теперь удалены, поэтому существует вероятность того, что существующий код может не компилироваться: однако эквивалентная функциональность все еще должна быть доступна.
Регулярные выражения POSIX-extended и POSIX-basic теперь обеспечивают соответствие букве стандарта POSIX гораздо более точно, чем раньше.
Добавлена поддержка (?imsx-imsx) конструкций.
Добавлена поддержка выражений lookbehind (?<=positive-lookbehind) и (?
Добавлена поддержка условных выражений (?(утверждение) истинное выражение | ложное выражение).
Добавлены струнные обертки MFC/ATL.
Поддержка Unicode; на основе ICU.
Изменена поддержка новой линии для распознавания \f как разделителя строк (все типы символов) и \x85 как разделителя строк для широких символов / только Unicode.
Добавлен новый формат flag format_literal, который рассматривает сменную строку как буквальную, а не как строку в стиле Perl или Sed.
Ошибки теперь сообщаются, бросая исключения типа regex_error. Типы, используемые ранее - bad_expression и bad_pattern - теперь просто типизированы для regex_error. Тип regex_error имеет несколько новых членов: код() для сообщения кода ошибки, а не строки, и положение() для сообщения, где в выражении произошла ошибка.
Полностью переписанный код соответствия шаблонам — он теперь до 10 раз быстрее, чем раньше.
Реорганизованная документация.
Устарели все интерфейсы, которые не являются частью предложения по стандартизации регулярных выражений.
Добавлены regex_iterator и regex_token_iterator.
Добавлена поддержка независимых подвыражений стиля Perl.
Добавлены операторы, не являющиеся участниками, в класс sub_match, так что вы можете сравнить sub_match со строками или добавить их в строку для создания новой строки.
Добавлена экспериментальная поддержка расширенного сбора информации.
Измените флаги матча так, чтобы они были отдельным типом (а не целым числом), если вы попытаетесь передать флаги матча как целое число, а не тип match_flag_, то вы получите ошибку компилятора.
Статья History раздела Boost.Regex 5.1.2 Background Information может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.