Captura de grupos arbitrários em JavaScript Regexp
Ao usar a captura de grupos em expressões regulares JavaScript, é essencial entender as limitações. Por padrão, apenas a última captura de um grupo repetido é mantida, mesmo que o grupo esteja aninhado.
Exemplo: grupo de captura aninhado
Considere a seguinte expressão regular:
/^(\s*\w ) $/
Saída esperada:
["foo bar baz", "foo", " bar", " baz"]
Saída real:
["foo bar baz", " baz"]
Neste caso, apenas o o último grupo capturado, "baz", é devolvido. Isso ocorre porque o JavaScript retém apenas a captura final de cada grupo repetido.
Opções para capturar vários grupos
Para superar essa limitação, diversas opções estão disponíveis:
Exemplo: Exec Loop e Divisão
Aqui está um exemplo usando um loop exec para capturar e dividir um grupo aninhado:
var text = "a;b;<c;d;e;f>;g;h;i;<no no no>;j;k;<xx;yy;zz>"; var r = /<(\w (;\w )*)>/g; var match; while ((match = r.exec(text)) != null) { print(match[1].split(";")); } // Output: // ["c", "d", "e", "f"] // ["xx", "yy", "zz"]
Neste exemplo, o grupo aninhado é capturado como grupo 1, que é então dividido no delimitador de ponto e vírgula.
Perguntas relacionadas
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3