Entendo que o java.regex
pacote não tem suporte para grupos nomeados ( http://www.regular-expressions.info/named.html ), então alguém pode me indicar uma biblioteca de terceiros que possui?
Eu olhei para o jregex, mas seu último lançamento foi em 2002 e não funcionou para mim (na verdade eu tentei apenas brevemente) no java5.
Respostas:
( Atualização : agosto de 2011 )
Como geofflane menciona em sua resposta , o Java 7 agora suporta grupos nomeados .
tchrist aponta no comentário que o suporte é limitado.
Ele detalha as limitações em sua ótima resposta " Java Regex Helper "
O regex Java 7 chamado suporte ao grupo foi apresentado em setembro de 2010 no blog da Oracle .
No release oficial do Java 7, as construções para suportar o grupo de captura nomeado são:
Outras alternativas para o pré-Java 7 foram:
( Resposta original : janeiro de 2009 , com os próximos dois links agora quebrados)
Você não pode se referir ao grupo nomeado, a menos que codifique sua própria versão do Regex ...
Foi exatamente isso que Gorbush2 fez neste tópico .
Regex2
(implementação limitada, como apontado novamente por tchrist , pois procura apenas identificadores ASCII. tchrist detalha a limitação como:
Nota: Você pode encontrar exemplos reais de recursão de regex em regexes Perl e PCRE, conforme mencionado no Regexp Power , especificações de PCRE e correspondência de strings com parênteses balanceados )
Exemplo:
Corda:
RegExp:
Acesso
Substituir
(extrato da implementação)
fonte
Para pessoas que chegam tarde demais: o Java 7 inclui grupos nomeados. Documentação de Matcher.group (String groupName).
fonte
Sim, mas é bagunçado invadir as aulas de sol. Existe uma maneira mais simples:
http://code.google.com/p/named-regexp/
fonte
Que tipo de problema você tem com o jregex ? Funcionou bem para mim no java5 e java6.
O Jregex faz bem o trabalho (mesmo que a última versão seja de 2002), a menos que você queira aguardar o javaSE 7 .
fonte
Para aqueles que executam pré-java7, os grupos nomeados são suportados pelo joni (porta Java da biblioteca regexp Oniguruma ). A documentação é escassa, mas funcionou bem para nós.
Os binários estão disponíveis via Maven ( http://repository.codehaus.org/org/jruby/joni/joni/ ).
fonte
Uma pergunta um pouco antiga, mas eu também estava precisando disso e que as sugestões acima eram inadequadas - e, como tal - desenvolvi um invólucro fino: https://github.com/hofmeister/MatchIt
fonte