2015-01-08 3 views
6

Я хотел бы использоватьандроид Java регулярные выражения, названные группы

matcher.group("login"); 

В Android 8+ на затмение, но не Matcher.group (String), кажется, существует. У вас есть (встроенное) решение?

+0

Контроллер не работает таким образом. Покажите нам, что вы хотите получить, из которого String – TheLostMind

+0

Мне нужна эта форма регулярного выражения: (? X) – hanoo

+0

Регулярное выражение из файла конфигурации, поэтому мне нужны именованные группы – hanoo

ответ

8

Осуществление класса Pattern для объектов, предоставляемых ICU, если быть точным, ICU4C.

Реализация регулярного выражения, используемая в Android, предоставляется ICU. Обозначения для регулярных выражений в основном представляют собой надмножество тех, которые используются в других реализациях Java-языка. Это означает, что существующие приложения обычно работают так, как ожидалось, но в редких случаях Android может принимать регулярное выражение, которое не принимается другими реализациями.

И ICU4C в настоящее время не поддерживает группу захваченных имен. Вы должны отступать от нумерованных групп захвата.

ICU не поддерживает названные группы захвата. http://bugs.icu-project.org/trac/ticket/5312

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

2

Я думал, что должен поделиться решением, которое нашел. В Github есть фантастическая библиотека, написанная Тони Трином (tony19), которая позволяет использовать группы с именем regex.

Взятые со страницы проекта:

«Эта легкая библиотека добавляет поддержку для именованных групп захвата в Java 5/6 (и на Android)

Это форк проекта с именем-регулярным выражением с. Код Google (в настоящее время неактивен). "

https://github.com/tony19/named-regexp

Я только что проверил это на Android 4.1.1 и выше, и до сих пор он работает как шарм. Я был приятно удивлен, обнаружив, что я могу просто заменить свой импорт для Matcher и Pattern с классами из этой библиотеки, и все мои существующие регулярные выражения, которые все еще используют нумерованные группы, все еще работают.

Я хоп это помогает.

Смежные вопросы