Насколько я понимаю, java.regex
пакет не поддерживает именованные группы ( http://www.regular-expressions.info/named.html ), поэтому кто-нибудь может указать мне на стороннюю библиотеку, которая поддерживает?
Я посмотрел на jregex, но его последний выпуск был в 2002 году, и он не работал для меня (по общему признанию, я только попробовал кратко) под java5.
Ответы:
( Обновление : август 2011 г. )
Как упоминает Джеффлан в своем ответе , Java 7 теперь поддерживает именованные группы .
В комментарии Трист указывает, что поддержка ограничена.
Он подробно описывает ограничения в своем великолепном ответе « Java Regex Helper »
Поддержка именованных групп Java 7 regex была представлена еще в сентябре 2010 года в блоге Oracle .
В официальном выпуске Java 7 конструкции для поддержки именованной группы захвата:
Другие альтернативы для pre-Java 7 были:
Габор Lipták упоминает (ноябрь 2012) , что этот проект не может быть активным (с несколькими выдающимися ошибками ), и его GitHub вилки можно считать вместо этого.
( Оригинальный ответ : январь 2009 г. , следующие две ссылки теперь не работают)
Вы не можете ссылаться на именованную группу, если вы не написали свою собственную версию Regex ...
Именно это и сделал Gorbush2 в этой теме .
Regex2
(Ограниченная реализация, как снова указал tchrist , поскольку он ищет только идентификаторы ASCII. tchrist детализирует ограничение как:
Примечание: Вы можете найти истинные примеры рекурсии в регулярных выражениях Perl и PCRE, как упомянуто в Regexp Power , спецификациях PCRE и Сопоставлении строк со сбалансированными скобками ( слайд)
Пример:
Строка:
RegExp:
доступ
замещать
(выписка из реализации)
источник
Для людей, приходящих к этому поздно: Java 7 добавляет именованные группы. Matcher.group (String groupName) документация.
источник
Да, но это грязное хакерство. Есть более простой способ:
http://code.google.com/p/named-regexp/
источник
Какую проблему вы получаете с Jregex ? Это работало хорошо для меня под java5 и java6.
Jregex хорошо справляется с этой задачей (даже если последняя версия 2002 года), если только вы не хотите ждать javaSE 7 .
источник
Для тех, кто работает до java7, именованные группы поддерживаются joni (порт Java библиотеки регулярных выражений Oniguruma ). Документация скудная, но она хорошо сработала для нас.
Двоичные файлы доступны через Maven ( http://repository.codehaus.org/org/jruby/joni/joni/ ).
источник
Немного старый вопрос, но мне это тоже понадобилось, и что приведенные выше предложения были неадекватны - и поэтому я сам разработал тонкую оболочку: https://github.com/hofmeister/MatchIt
источник