Este artigo descreve a operação da extração regular Java de conteúdo entre colchetes. Compartilhe -o para sua referência, como segue:
Certa vez, encontrei um problema no meu trabalho, que eu precisava extrair o conteúdo em cada suporte em uma string. Pesquisei on -line e descobri que expressões regulares podem ser usadas para extrair o conteúdo entre colchetes. A implementação específica é a seguinte:
importar java.util.ArrayList; importar java.util.list; importar java.util.regex.matcher; importar java.util.regex.pattern; public class ExtractMessage {public STATID Main (string [] args) {string msg = "performancanager [1st Bracket] [1ST] [1STRAID main (string [] args) {string msg =" performancanager [1st Bracket] suporte] 79 ~ "; List <String> List = ExtractMessageByReGular (MSG); for (int i = 0; i <list.size (); i ++) {System.out.println (i+"->"+list.get (i)); }} / ** * Use expressões regulares para extrair o conteúdo entre colchetes * @param msg * @return * / list public static <tring> extraCTMessageByReGular (string msg) {list <string> list = new ArrayList <String> (); Padrão p = padrão.compile ("(// [[^//]]*//])"); Matcher M = P.Matcher (MSG); while (m.find ()) {list.add (m.group (). Substring (1, m.group (). comprimento ()-1)); } Lista de retorno; }}O resultado da saída é o seguinte:
0-> O 1º suporte
1-> O segundo suporte
2-> O terceiro suporte
Isso concluiu rapidamente o trabalho de código, mas depois descobri que, se os colchetes ainda contêm colchetes, a expressão regular perderá seu efeito. Eu tive que encontrar uma maneira de resolvê -lo sozinho. Após a pesquisa, finalmente encontrei uma solução. A implementação específica é a seguinte:
pacote com.perry.test; importar java.util.ArrayList; importar java.util.list; importar java.util.regex.matcher; importar java.util.regex.pattern; public clemementsage {public static void main ([] args) [(stractn) Suporte contém colchetes]] <[3rd backet] 79 ~ "; List <String> List = ExtractMessage (MSG); for (int i = 0; i <list.size (); i ++) {System.out.println (i+"->"+list.get (i)); }} / ** * Extrair o conteúdo dos colchetes e ignorar os colchetes entre os colchetes * @param msg * @return * / list estática pública <stract> extraCTMessage (string msg) {list <string> list = new ArrayList <String> (); int start = 0; int startflag = 0; int endflag = 0; for (int i = 0; i <msg.length (); i ++) {if (msg.charat (i) == '[') {startflag ++; if (startflag == endflag + 1) {start = i; }} else if (msg.charat (i) == ']') {endflag ++; if (endflag == startflag) {list.add (msg.substring (start + 1, i)); }}} Lista de retorno; }}O resultado da saída é o seguinte:
0-> O 1º suporte
1-> O segundo suporte [o suporte contém colchetes]
2-> O terceiro suporte
A idéia principal é atravessar a corda e marcar as posições iniciais e finais dos colchetes. Se for a posição final correspondente à posição inicial dos colchetes, as contagens da posição inicial e a posição final são as mesmas; portanto, o conteúdo dos colchetes completo é interceptado.
PS: Aqui estão duas ferramentas de expressão regular muito convenientes para sua referência:
Ferramenta de teste on -line de expressão regular JavaScript:
http://tools.vevb.com/regex/javascript
Ferramenta de geração online de expressão regular:
http://tools.vevb.com/regex/create_reg
Para obter mais informações sobre os algoritmos Java, os leitores interessados neste site podem visualizar os tópicos: "Java regulares habilidades de expressão", "Estrutura de dados Java e tutorial de algoritmo", "Java Operação Dom Node Skills", "Java File and Directory Operation Skills Resumo" e "Java cache Operação Sabina" Resumo "
Espero que este artigo seja útil para a programação Java de todos.