openjdk.ruOpenJDK на русском

JEP 111: Additional Unicode Constructs for Regular Expressions

Дополнительные конструкции Unicode для регулярных выражений

ОтветственныйXueming Shen
ТипFeature
ОбластьSE
СтатусCandidate
Компонентcore-libs
Обсуждениеcore dash libs dash dev at openjdk dot java dot net
ТрудоёмкостьS
ДлительностьS
ОдобренBrian Goetz
Создан2011/07/26 20:00
Обновлён2016/01/18 04:55
Задача8046101

Аннотация

Перенести дополнительные конструкции регулярных выражений из Unicode TR#18.

Мотивация

Основная цель — повысить и расширить уровень поддержки Unicode, чтобы разработчики могли писать на платформе Java сложные регулярные выражения с поддержкой Unicode. Это важно, чтобы платформа Java оставалась конкурентоспособной по сравнению с другими языками, которые уже предлагают более полную поддержку регулярных выражений Unicode.

Описание

Регулярные выражения Java происходят от регулярных выражений Perl и должны давать Java-разработчикам большую часть возможностей регулярных выражений в стиле Perl. За последние пару лет регулярные выражения Perl быстро развивались вслед за Unicode Standard TR#18 Unicode Regular Expressions. Заявлено, что регулярные выражения Java соответствуют уровню 1 (Level 1) того же стандарта Unicode TR#18 Unicode Regular Expressions, а также требованию RL2.1 Canonical Equivalents (канонические эквиваленты); это «самый низкий» уровень соответствия. Поскольку стандарт Unicode широко признан фактическим стандартом для платформ разработки, а Java использует Unicode как внутреннюю кодировку, более высокий уровень поддержки Unicode, по всей видимости, нужен разработчикам приложений, работающих с Unicode. Для улучшения поддержки Unicode в регулярных выражениях Java предлагаются следующие новые конструкции и возможности:

  • \N \{...\} — свойства имён Unicode
  • \X — расширенные кластеры графем
  • Исправить неработающую поддержку канонических эквивалентов
  • \R — последовательность разрыва строки Unicode, как предлагается в разделе Line Boundaries (границы строк) TR#18
  • \g \{...\} — конструкция в стиле Perl для именованных и обычных захватывающих групп
  • Более полный набор свойств Unicode, как в \p \{IsXXXX\}
  • \h \H \v \V — горизонтальные и вертикальные пробельные символы

Тестирование

Все перечисленные здесь возможности (новые конструкции регулярных выражений) будут покрыты новыми модульными тестами, которые будут запускаться в существующем тестовом фреймворке.