[{"data":1,"prerenderedAt":529},["ShallowReactive",2],{"article-o_basico_sobre_expressoes_regulares":3,"article-surround-o_basico_sobre_expressoes_regulares":520},{"id":4,"title":5,"author":6,"body":8,"description":509,"extension":510,"image":25,"keywords":511,"meta":512,"navigation":513,"path":514,"publishedAt":515,"seo":516,"stem":517,"tags":518,"__hash__":519},"articles\u002Farticles\u002Fo_basico_sobre_expressoes_regulares.md","O Básico Sobre Expressões Regulares",{"name":7},"Danilo Pinotti",{"type":9,"value":10,"toc":491},"minimark",[11,15,19,27,32,35,53,56,60,63,66,73,76,79,95,98,105,109,112,123,131,134,143,146,154,157,160,163,172,175,181,184,190,197,203,206,215,218,222,225,227,236,239,245,249,252,257,266,269,278,281,284,293,296,300,303,306,315,318,323,333,337,340,343,352,355,364,367,371,374,377,388,391,400,403,412,415,421,425,428,437,440,449,452,456,459,462,465,469,472,480,487],[12,13,5],"h1",{"id":14},"o-básico-sobre-expressões-regulares",[16,17,18],"p",{},"O que são? Pra que servem? Podem mesmo me ajudar?",[16,20,21],{},[22,23],"img",{"alt":24,"src":25,"title":26},"Regex","\u002Fimages\u002Farticles\u002Fregex.jpeg","Expressões Regulares",[28,29,31],"h2",{"id":30},"o-que-são","O que são?",[16,33,34],{},"Expressão regular é uma forma de representar palavras, frases ou até parágrafos através de uma única notação. Ainda não entendeu? Vamos a alguns exemplos:",[36,37,38,42,50],"ul",{},[39,40,41],"li",{},"Imagine no desenvolvimento de um sistema ao qual é repleto em validações em textos. Como será validado um campo de e-mail, por exemplo? Percorrerá caractere por caractere a fim de buscar os padrões de um campo de e-mail ?",[39,43,44,45,49],{},"Imagine na escrita de um texto ao qual você quer buscar todas as palavras escritas duas vezes seguidas, exemplo “Usar expressões regulares ",[46,47,48],"strong",{},"para para"," resolver (…)”. Além de buscá-las você também quer arrumá-las automaticamente.",[39,51,52],{},"Substituir todas as ocorrências da palavra ‘carro’ por ‘automóvel’.",[16,54,55],{},"A aplicação de expressões regulares é praticamente infinita, basta encontrar os momentos certos para usá-las.",[28,57,59],{"id":58},"conceitos-básicos","Conceitos básicos",[16,61,62],{},"Antes de começar a explicar como criar e ler uma expressão regular, é importante ter em mente o significado da palavra match. A tradução literal da palavra é “corresponder’” porém, neste contexto, a palavra será utilizada para dizer que uma expressão regular “casou” com uma palavra, frase ou parágrafo, ou seja, quando uma expressão regular conseguir representar o que foi planejado.",[16,64,65],{},"Outra ideia que deve sempre estar em mente é que uma expressão regular é lida como uma palavra onde cada parte dela representa, inicialmente, apenas um caractere. Mais para frente, neste artigo, será mostrado isso.",[16,67,68,69],{},"Uma expressão regular é formada de vários metacaracteres e caracteres literais. São chamados metacaracteres os caracteres que servem para representarem outros caracteres, neste artigo não serão explicados todos. São eles: ",[70,71,72],"code",{},". ? * + ^ $ | [ ] { } ( ) \\",[16,74,75],{},"Para tornar um metacaractere um caractere literal, usa-se o escape (). Por exemplo, para usar o ponto como caractere literal: .",[16,77,78],{},"Um exemplo simples de expressão regular:",[80,81,86],"pre",{"className":82,"code":83,"language":84,"meta":85,"style":85},"language-regexp shiki shiki-themes github-light github-dark","[0-9]{5}-[0-9]{3}\n","regexp","",[70,87,88],{"__ignoreMap":85},[89,90,93],"span",{"class":91,"line":92},"line",1,[89,94,83],{},[16,96,97],{},"A expressão acima foi escrita para “casar” com um CEP (código de endereçamento postal) onde possui 5 dígitos numéricos, um traço e logo após, mais 3 dígitos numéricos.",[16,99,100],{},[22,101],{"alt":102,"src":103,"title":104},"Exemplo de REGEX","\u002Fimages\u002Farticles\u002Fregex-1.png","Exemplo de regex",[28,106,108],{"id":107},"componentes-básicos","Componentes básicos",[16,110,111],{},"Nesta parte do artigo serão explicados separadamente alguns dos componentes que formam uma expressão regular.",[16,113,114,115,122],{},"Existem ferramentas online para testar, em tempo real, as expressões regulares criadas. É interessante você acompanhar a leitura do artigo e ir fazendo seus próprios testes. Uma ferramenta interessante é o ",[116,117,121],"a",{"href":118,"rel":119},"https:\u002F\u002Fregex101.com\u002F",[120],"nofollow","regex101",".",[124,125,127,128],"h3",{"id":126},"lista","Lista ",[89,129,130],{}," ...",[16,132,133],{},"A lista é um dos componentes mais utilizados. Ela permite você escolher quais caracteres poderão aparecer no lugar em que ela foi colocada. Exemplo:",[80,135,137],{"className":82,"code":136,"language":84,"meta":85,"style":85},"[ab]c\n",[70,138,139],{"__ignoreMap":85},[89,140,141],{"class":91,"line":92},[89,142,136],{},[16,144,145],{},"Neste caso, a expressão regular casará com as seguintes informações:",[80,147,152],{"className":148,"code":150,"language":151,"meta":85},[149],"language-text","ac\nbc\n","text",[70,153,150],{"__ignoreMap":85},[16,155,156],{},"Uma lista representa apenas um caractere.",[16,158,159],{},"Dentro da lista todos os caracteres são literais, com exceção do traço (-), do acento circunflexo (^) e, caso não seja o primeiro ítem da lista, o colchete de fechar (]).",[16,161,162],{},"É possível utilizar um conjunto de dados dentro da listas, desta forma, facilitando filtrar caracteres. Exemplo:",[80,164,166],{"className":82,"code":165,"language":84,"meta":85,"style":85},"[0-2]c\n",[70,167,168],{"__ignoreMap":85},[89,169,170],{"class":91,"line":92},[89,171,165],{},[16,173,174],{},"Que casará com:",[80,176,179],{"className":177,"code":178,"language":151,"meta":85},[149],"0c\n1c\n2c\n",[70,180,178],{"__ignoreMap":85},[16,182,183],{},"Como conjuntos dentro de listas você pode utilizar:",[80,185,188],{"className":186,"code":187,"language":151},[149],"a-z\nA-Z\nA-z\n0-9\n",[70,189,187],{"__ignoreMap":85},[124,191,193,194],{"id":192},"lista-negada","Lista negada ",[89,195,196],{},"^ …",[16,198,199,200,202],{},"A lista negada têm a mesma finalidade da lista comum, porêm, os caracteres dentro dela são ignorados no momento de casar. A lista negada é uma lista convencional a qual o primeiro ítem é o circunflexo: ",[89,201,196],{},". Em outras palavras, ela permite representar qualquer outro caractere, exceto os que estão dentro dela.",[16,204,205],{},"Exemplos de utilização:",[80,207,209],{"className":82,"code":208,"language":84,"meta":85,"style":85},"pat[^a]\n",[70,210,211],{"__ignoreMap":85},[89,212,213],{"class":91,"line":92},[89,214,208],{},[16,216,217],{},"A expressão regular acima consegue se casar com a palavra ‘pato’ porém, não consegue se casar com ‘pata’ por causa da lista negada que “proíbe” o aparecimento a letra “a” no final da palavra.",[124,219,221],{"id":220},"ponto","Ponto .",[16,223,224],{},"O ponto ( . ) é um metacaractere que se casa com qualquer outro caractere, ou seja, ele é um curinga.",[16,226,205],{},[80,228,230],{"className":82,"code":229,"language":84,"meta":85,"style":85},".[a-z]\n",[70,231,232],{"__ignoreMap":85},[89,233,234],{"class":91,"line":92},[89,235,229],{},[16,237,238],{},"A expressão regular acima se casa com qualquer conjunto ao qual começa com qualquer caractere e, em seguida, uma letra minúscula:",[80,240,243],{"className":241,"code":242,"language":151,"meta":85},[149],"1a, rb, (z, pw, 8z, etc.\n",[70,244,242],{"__ignoreMap":85},[124,246,248],{"id":247},"metacaracteres-quantificadores","Metacaracteres quantificadores",[16,250,251],{},"Pense que agora que você já fez a lista de caracteres desejados, você quer buscar todas as palavras que começam com eles. Você pode fazer de algumas formas.",[253,254,256],"h4",{"id":255},"primeira-forma-limitar-a-quantidade-exata-de-vezes-que-aquele-elemento-aparecerá","Primeira forma: Limitar a quantidade exata de vezes que aquele elemento aparecerá",[16,258,259,260,263,264],{},"Tendo uma lista com os elementos escolhidos, você pode escolher quantas vezes ela poderá se repetir com a utilização do metacaractere de chaves ( {} ) com a quantidade de vezes que o elemento anterior poderá se repetir, ou seja: ",[89,261,262],{},"a-b","{3} é o mesmo que [a-b][a-b]",[89,265,262],{},[16,267,268],{},"Utilização:",[80,270,272],{"className":82,"code":271,"language":84,"meta":85,"style":85},"[a-b]{2}\n",[70,273,274],{"__ignoreMap":85},[89,275,276],{"class":91,"line":92},[89,277,271],{},[16,279,280],{},"Neste caso “falamos” que a expressão regular se casará com qualquer palavra\u002Ftermo de duas letras em que cada uma poderá ser ‘a’ ou ‘b’.",[16,282,283],{},"Outro exemplo:",[80,285,287],{"className":82,"code":286,"language":84,"meta":85,"style":85},"[a-z]{5}\n",[70,288,289],{"__ignoreMap":85},[89,290,291],{"class":91,"line":92},[89,292,286],{},[16,294,295],{},"Neste segundo caso podemos dizer que a expressão regular irá casar com qualquer palavra, toda minúscula, de 5 letras.",[253,297,299],{"id":298},"segunda-forma-definir-um-limite-mínimo-e-máximo-de-vezes-que-o-elemento-poderá-aparecer","Segunda forma: Definir um limite mínimo e máximo de vezes que o elemento poderá aparecer",[16,301,302],{},"Semelhante ao primeiro caso, esta limitação é feita usando os metacaracteres de chaves, porém, com dois valores dentro que representam, respectivamente, valor mínimo e valor máximo.",[16,304,305],{},"Utilização",[80,307,309],{"className":82,"code":308,"language":84,"meta":85,"style":85},"[a-z]{3,5}\n",[70,310,311],{"__ignoreMap":85},[89,312,313],{"class":91,"line":92},[89,314,308],{},[16,316,317],{},"No exemplo acima, a expressão regular casará com qualquer palavra, toda minúscula, de 3 até 5 letras.",[319,320,322],"h5",{"id":321},"metacaractere","Metacaractere: ?",[16,324,325,326,329,330],{},"Este metacaractere permite tornar opcional a ocorrência do elemento ao seu lado, ou seja:\n",[70,327,328],{},"[a-z]?"," é o equivalente a: ",[70,331,332],{},"[a-z]{0,1}",[253,334,336],{"id":335},"terceira-forma-não-limitar-a-quantidade-de-vezes-que-ele-poderá-aparecer","Terceira forma: Não limitar a quantidade de vezes que ele poderá aparecer",[16,338,339],{},"Para isso podemos utilizar dois metacaracteres diferentes, o asterisco (*) e o mais (+).",[16,341,342],{},"A diferença é simples, o asterisco permite casar o elemento nenhuma vez ou infinitas vezes, enquanto o (+) permite casar o elemento pelo menos uma vez ou infinitas vezes.\nExemplos:",[80,344,346],{"className":82,"code":345,"language":84,"meta":85,"style":85},"[a-z]*\n",[70,347,348],{"__ignoreMap":85},[89,349,350],{"class":91,"line":92},[89,351,345],{},[16,353,354],{},"Permite casar qualquer palavra minúscula ou nenhuma palavra.",[80,356,358],{"className":82,"code":357,"language":84,"meta":85,"style":85},"[a-z]+\n",[70,359,360],{"__ignoreMap":85},[89,361,362],{"class":91,"line":92},[89,363,357],{},[16,365,366],{},"Permite casar uma única letra ou qualquer palavra minúscula.",[124,368,370],{"id":369},"âncoras","Âncoras",[16,372,373],{},"Metacaracteres chamados de âncoras são aqueles que permite você “posicionar” sua expressão regular, indicando início ou fim de linhas e parágrafos:",[16,375,376],{},"São eles:",[36,378,379,382,385],{},[39,380,381],{},"^ : Circunflexo. Indica o início de uma linha",[39,383,384],{},"$ : Cifrão. Indica o final de uma linha",[39,386,387],{},"\\b : Borda. Indica as bordas de uma palavra, ou seja, início ou fim de uma palavra.",[16,389,390],{},"Exemplos de uso:",[80,392,394],{"className":82,"code":393,"language":84,"meta":85,"style":85},"^hoje$\n",[70,395,396],{"__ignoreMap":85},[89,397,398],{"class":91,"line":92},[89,399,393],{},[16,401,402],{},"Se casará apenas com a linha que só tenha a palavra “hoje”.",[80,404,406],{"className":82,"code":405,"language":84,"meta":85,"style":85},"^hoje o \\b[A-Za-z]+\\b estará maravilhoso$\n",[70,407,408],{"__ignoreMap":85},[89,409,410],{"class":91,"line":92},[89,411,405],{},[16,413,414],{},"Se casará com qualquer uma das linhas abaixo:",[80,416,419],{"className":417,"code":418,"language":151,"meta":85},[149],"hoje o dia estará maravilhoso\nhoje o sol estará maravilhoso\nhoje o (qualquer termo sem espaços aqui) estará maravilhoso\n",[70,420,418],{"__ignoreMap":85},[28,422,424],{"id":423},"aplicações-gerais","Aplicações gerais",[16,426,427],{},"Como dito no início do artigo, a aplicação de expressões regulares tende ao infinito. Você consegue, além de abrir o leque de opções em suas buscas, usá-las em validações e substituições (não explicado no artigo). Abaixo mais alguns exemplos de utilização:",[80,429,431],{"className":82,"code":430,"language":84,"meta":85,"style":85},"\\([0-9]{2}\\)[0-9]?[0-9]{4}-[0-9]{4}\n",[70,432,433],{"__ignoreMap":85},[89,434,435],{"class":91,"line":92},[89,436,430],{},[16,438,439],{},"Casará com números de telefone que contenham o DDD de dois dígitos numéricos e possuam ou não o nono dígito: (99)98888–8888 ou (99)8888–8888",[80,441,443],{"className":82,"code":442,"language":84,"meta":85,"style":85},"[a-z0-9_]+@[a-z0-9]+(\\.[a-z0-9]+)+\n",[70,444,445],{"__ignoreMap":85},[89,446,447],{"class":91,"line":92},[89,448,442],{},[16,450,451],{},"Casará com emails.\nEntre outras…",[28,453,455],{"id":454},"conclusão","Conclusão",[16,457,458],{},"A partir do momento em que você aprender como usar expressões regulares e ver as aplicações, verá o quanto irá facilitar em atividades do dia-a-dia, principalmente para quem é da área de informática.",[16,460,461],{},"No meu caso, enquanto escrevia minha monografia da faculdade, consegui identificar vários deslizes de escrita como: palavras escritas duas vezes, parágrafo iniciando com letra minúscula, falta de espaço depois da vírgula, etc.",[16,463,464],{},"O seguinte livro, que será deixado como referência, possui vários exemplos de aplicações de expressões regulares.",[28,466,468],{"id":467},"referências","Referências",[16,470,471],{},"Apesar de existirem diversos lugares que ensinam a usar expressões regulares irei indicar o lugar em que aprendi, onde está explicado de forma simples e divertida.",[16,473,474,475],{},"Livro: ",[116,476,479],{"href":477,"rel":478},"https:\u002F\u002Fbooks.google.com.br\u002Fbooks?id=MNCCCwAAQBAJ&hl=pt-BR&source=gbs_navlinks_s",[120],"Expressões Regulares: Uma abordagem divertida",[16,481,482,483],{},"Endereço eletrônico: ",[116,484,485],{"href":485,"rel":486},"http:\u002F\u002Faurelio.net\u002Fregex\u002Fguia\u002F",[120],[488,489,490],"style",{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":85,"searchDepth":492,"depth":492,"links":493},2,[494,495,496,506,507,508],{"id":30,"depth":492,"text":31},{"id":58,"depth":492,"text":59},{"id":107,"depth":492,"text":108,"children":497},[498,501,503,504,505],{"id":126,"depth":499,"text":500},3,"Lista  ...",{"id":192,"depth":499,"text":502},"Lista negada ^ …",{"id":220,"depth":499,"text":221},{"id":247,"depth":499,"text":248},{"id":369,"depth":499,"text":370},{"id":423,"depth":492,"text":424},{"id":454,"depth":492,"text":455},{"id":467,"depth":492,"text":468},"Expressão regular é uma forma de representar palavras, frases ou até parágrafos através de uma única notação. A aplicação de expressões regulares é praticamente infinita, basta encontrar os momentos certos para usá-las.","md","regex, expressões regulares, regex 101, aprendendo regex",{},true,"\u002Farticles\u002Fo_basico_sobre_expressoes_regulares","2017-02-06T21:00:00",{"title":5,"description":509},"articles\u002Fo_basico_sobre_expressoes_regulares","regex, expressões regulares","AKy7ir_oVNtMokzq6SReFMgsoS1A4LOKPgc-oXz7_ME",[521,525],{"title":522,"path":523,"stem":524,"children":-1},"How to easily browse through frequent folders","\u002Farticles\u002Fhow_to_easily_browse_through_frequent_folders","articles\u002Fhow_to_easily_browse_through_frequent_folders",{"title":526,"path":527,"stem":528,"children":-1},"Primeiros passos com Docker","\u002Farticles\u002Fprimeiros_passos_com_docker","articles\u002Fprimeiros_passos_com_docker",1775139777844]