NSRegExNamedCaptureGroup разработан на Swift и Objective-C @TorinKwok. Он предоставляет разработчикам Cocoa поддержку именованных групп захвата (Named Capture Groups, NCG) в стиле .NET через интуитивно понятный программный интерфейс.
Почти все современные реализации регулярных выражений поддерживают индексированные группы захвата (Numbered Capturing Groups) и обратные ссылки (backreferences). Однако выражения с большим количеством таких групп и обратных ссылок становятся очень трудными для чтения и понимания. Поэтому многие языки программирования (например, модуль Python re, движок PHP preg и семейство языков .NET) предоставляют поддержку NCG в своём стиле. Используя NCG, мы можем получить доступ к результатам сопоставления регулярного выражения в более удобочитаемой форме, а не в виде цифровых индексов, которые более удобны для компьютера. Это делает регулярные выражения более читаемыми и помогает разработчикам избежать ошибок.
Однако до сих пор предпочитаемая реализация регулярных выражений в macOS и iOS — класс NSRegularExpression
— не поддерживает NCG.
Согласно документации Apple по разработке, класс NSRegEx
основан на реализации регулярных выражений ICU (International Components for Unicode):
В настоящее время поддерживается синтаксис шаблонов, указанный ICU. Регулярные выражения ICU описаны по адресу http://userguide.icu-project.org/strings/regexp.
ICU официально заявляет, что начиная с версии 55 они начали поддерживать NCG в стиле .NET:
(?...) Именованная группа захвата. Угловые скобки являются литералами — они появляются в шаблоне.
Например:
\b**(?\d\d\d)-(?\d\d\d)-(?**\d\d\d\b)
Тем не менее, собственная документация Apple по NSRegEx
не перечисляет синтаксис NCG; NSRegEx
и NSTextCheckingResult
также предоставляют только программный интерфейс для индексированных групп захвата: rangeAt(:_)
.
__NSRegExNamedCaptureGroup__
предоставляет разработчикам, использующим NSRegEx
, максимально интуитивный способ использования NCG, делая ваши регулярные выражения более удобными для чтения и обслуживания. Для получения дополнительной информации см. файл README.
Поддержка watchOS и tvOS будет предоставлена в следующей версии. Библиотека изначально была разработана как полностью кроссплатформенный пакет Swift, но из-за желания автора предоставить максимально интуитивно понятный программный интерфейс, она использует множество функций времени выполнения Objective-C, поэтому её невозможно перенести на платформу Linux.
NSRegExNamedCaptureGroup является открытым исходным кодом на GitHub под лицензией Apache-2.0.
Если у вас есть какие-либо вопросы, вы можете создать issue на странице GitHub.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )