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 — горизонтальные и вертикальные пробельные символы
Тестирование
Все перечисленные здесь возможности (новые конструкции регулярных выражений) будут покрыты новыми модульными тестами, которые будут запускаться в существующем тестовом фреймворке.