<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" version="2.0">
    <channel>
        
        <title>
            <![CDATA[ Regex - freeCodeCamp.org ]]>
        </title>
        <description>
            <![CDATA[ Aprenda a codificar - de graça. Tutoriais de programação em Python, JavaScript, Linux e muito mais. ]]>
        </description>
        <link>https://www.freecodecamp.org/portuguese/news/</link>
        <image>
            <url>https://cdn.freecodecamp.org/universal/favicons/favicon.png</url>
            <title>
                <![CDATA[ Regex - freeCodeCamp.org ]]>
            </title>
            <link>https://www.freecodecamp.org/portuguese/news/</link>
        </image>
        <generator>Eleventy</generator>
        <lastBuildDate>Sat, 09 May 2026 13:42:18 +0000</lastBuildDate>
        <atom:link href="https://www.freecodecamp.org/portuguese/news/tag/regex/rss.xml" rel="self" type="application/rss+xml" />
        <ttl>60</ttl>
        
            <item>
                <title>
                    <![CDATA[ Truques simples em regex para iniciantes ]]>
                </title>
                <description>
                    <![CDATA[ Sempre quis aprender expressões regulares (regex), mas se desanimou com a complexidade? Neste artigo, eu vou mostrar para você 5 truques com regex fáceis de aprender que você pode começar a usar imediatamente no seu editor favorito. Configuração do editor de texto Embora quase todos os editores de texto suportem ]]>
                </description>
                <link>https://www.freecodecamp.org/portuguese/news/truques-simples-em-regex-para-iniciantes/</link>
                <guid isPermaLink="false">646aa05cae2709063d5da801</guid>
                
                    <category>
                        <![CDATA[ Regex ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Marcos Adriano ]]>
                </dc:creator>
                <pubDate>Mon, 12 Jun 2023 21:00:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/portuguese/news/content/images/2023/05/1_wUY_k-Q4q-z10Zo425qC5Q.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Artigo original:</strong> <a href="https://www.freecodecamp.org/news/simple-regex-tricks-for-beginners-3acb3fa257cb/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">Simple RegEx tricks for beginners</a>
      </p><p>Sempre quis aprender expressões regulares (<em>regex</em>), mas se desanimou com a complexidade? Neste artigo, eu vou mostrar para você 5 truques com <em>regex </em>fáceis de aprender que você pode começar a usar imediatamente no seu editor favorito.</p><h3 id="configura-o-do-editor-de-texto"><strong>Configuração do editor de texto</strong></h3><p>Embora quase todos os editores de texto suportem expressões regulares, eu usarei o Visual Studio Code, mas você pode usar qualquer editor que você goste. Observe, também, que você geralmente precisa ativar a <em>regex</em> em algum lugar próximo ao campo de busca. Aqui está como fazer isso no VS Code:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/05/GjEq59Gj7Io7MWY4OuayOCmqZo0f5ezXyvOS.png" class="kg-image" alt="GjEq59Gj7Io7MWY4OuayOCmqZo0f5ezXyvOS" width="309" height="64" loading="lazy"><figcaption>Você precisa ativar as regex clicando nesta opção</figcaption></figure><h3 id="1-corresponde-a-qualquer-caractere"><strong>1) <code>.</code> — Corresponde a qualquer caractere</strong></h3><p>Vamos começar pelo básico. O símbolo <code>.</code> equivale a qualquer caractere:</p><pre><code>b.t</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/05/tMEDSKS2mHfOfqYTQP-elCZI5OnGUObC484v.png" class="kg-image" alt="tMEDSKS2mHfOfqYTQP-elCZI5OnGUObC484v" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2023/05/tMEDSKS2mHfOfqYTQP-elCZI5OnGUObC484v.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2023/05/tMEDSKS2mHfOfqYTQP-elCZI5OnGUObC484v.png 794w" sizes="(min-width: 720px) 720px" width="794" height="148" loading="lazy"></figure><p>A <em>regex </em>acima equivale a <code>"bot”</code>, <code>"bat”</code> e qualquer outra palavra de 3 caracteres que comece com <code>b</code> e termine com <code>t</code>. Se, no entanto, você quiser pesquisar pelo símbolo de ponto, precisará "escapar" o símbolo usando <code>\</code>. Então, essa <em>regex</em> corresponderá ao texto exato <code>"b.t"</code>:</p><pre><code>b\.t</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/05/anNgoajLGzpFhPWYRnVGlowi0bL4Z4xni59R.png" class="kg-image" alt="anNgoajLGzpFhPWYRnVGlowi0bL4Z4xni59R" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2023/05/anNgoajLGzpFhPWYRnVGlowi0bL4Z4xni59R.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2023/05/anNgoajLGzpFhPWYRnVGlowi0bL4Z4xni59R.png 631w" width="631" height="183" loading="lazy"></figure><h3 id="2-corresponde-a-qualquer-texto"><strong>2) .* — Corresponde a qualquer texto</strong></h3><p>Aqui, <code>.</code> significa <em>"qualquer caractere"</em> e <code>*</code> significa <em>"qualquer coisa antes desse símbolo repetida qualquer número de vezes"<em>.</em></em> Juntos, (<code>.*</code>) significam <em>"qualquer símbolo qualquer número de vezes" </em>e servem para encontrar correspondências começando ou terminando em algum texto. Vamos supor que temos um método do JavaScript com a seguinte assinatura:</p><pre><code>loadScript(scriptName: string, pathToFile: string)</code></pre><p>Queremos encontrar todas as chamadas desse método onde <code>pathToFile</code> aponta para qualquer arquivo na pasta <code>"lua"</code> . Você pode usar a seguinte expressão regular para isso:</p><pre><code>loadScript.*lua</code></pre><p>Isso significa, <em>"encontre todas as ocorrências de </em><code><em>"<em>loadScript</em>"</em></code><em><em> </em>seguidas por qualquer texto até a última ocorrência de<em> </em></em><code><em>"<em>lua</em>"</em></code><em>"</em></p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/05/wCWC964KLZKxEHdW0fZlr4Z-X-vdcbYX-ogk.png" class="kg-image" alt="wCWC964KLZKxEHdW0fZlr4Z-X-vdcbYX-ogk" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2023/05/wCWC964KLZKxEHdW0fZlr4Z-X-vdcbYX-ogk.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2023/05/wCWC964KLZKxEHdW0fZlr4Z-X-vdcbYX-ogk.png 800w" sizes="(min-width: 720px) 720px" width="800" height="321" loading="lazy"><figcaption>loadScript.*lua: corresponde a qualquer texto começando com "loadScript" e terminado com "lua"</figcaption></figure><h3 id="3-correspond-ncia-n-o-gananciosa"><strong>3) ? — Correspondência não gananciosa</strong></h3><p>O <code>?</code> depois do <code>.*</code> e algumas outras sequências de regex significa "Faça a correspondência ao mínimo possível". Se você olhar na imagem anterior, você verá que o texto <code>"lua"</code> aparece duas vezes em cada correspondência e que tudo até o segundo <code>"lua"</code> foi considerado. Se, ao invés disso, você quiser corresponder a tudo até a primeira ocorrência de &nbsp;<code>"lua"</code>, terá que usar a seguinte <em>regex</em>:</p><pre><code>loadScript.*?lua</code></pre><p>Ela significa, <em>"Corresponda a tudo que começa com </em><code><em><em>"loadScript"</em></em></code><em><em> </em>seguido por qualquer coisa até a primeira ocorrência de<em> </em></em><code><em><em>"lua"</em></em></code><em><em>"</em></em></p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/05/NnHX2yevennzK3Z9ddpq1NPBsbfWnyalfFrw.png" class="kg-image" alt="NnHX2yevennzK3Z9ddpq1NPBsbfWnyalfFrw" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2023/05/NnHX2yevennzK3Z9ddpq1NPBsbfWnyalfFrw.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2023/05/NnHX2yevennzK3Z9ddpq1NPBsbfWnyalfFrw.png 800w" sizes="(min-width: 720px) 720px" width="800" height="352" loading="lazy"><figcaption>loadScript.*?lua: corresponde a tudo começando com loadScript e até a primeira ocorrência de "lua"</figcaption></figure><h3 id="4-captura-grupos-e-refer-ncias-anteriores"><strong>4) ( ) $ — Captura grupos e referências anteriores</strong></h3><p>Ok. Agora, podemos encontrar alguns textos. Se quisermos, no entanto, mudar partes dos textos que encontramos? Geralmente, precisamos usar captura de grupos para isso.</p><p>Vamos supor que mudamos nosso método <code>loadScript</code> e agora, de repente, ele precisa de outro parâmetro inserido em seus outros dois parâmetros. Vamos chamar esse novo parâmetro de <code>id</code>. Então, a nova assinatura da função deve ficar assim: <code>loadScript(scriptName, id, pathToFile)</code>. Nós não podemos usar a substuição normal do editor de texto aqui, mas uma expressão regular é exatamente o que precisamos.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/05/hRdlYnNzYuX64kcVoXrvtH2RfwaY3FzNZedD.png" class="kg-image" alt="hRdlYnNzYuX64kcVoXrvtH2RfwaY3FzNZedD" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2023/05/hRdlYnNzYuX64kcVoXrvtH2RfwaY3FzNZedD.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2023/05/hRdlYnNzYuX64kcVoXrvtH2RfwaY3FzNZedD.png 800w" sizes="(min-width: 720px) 720px" width="800" height="365" loading="lazy"><figcaption>loadScript\(.*?,.*?\)</figcaption></figure><p>Você pode ver acima o resultado da execução da seguinte expressão regular:</p><pre><code>loadScript\(.*?,.*?\)</code></pre><p>Ela significa: <em>"corresponda a tudo que inicia com <em> <code>"loadScript("</code> </em>seguido de qualquer coisa até<em> </em>o primeiro símbolo <em><code>,</code>, </em>seguido por qualquer coisa até o primeiro<em> <code>)</code></em>"</em></p><p>As únicas coisas que podem parecer estranhas para você aqui são os símbolos <code>\</code>. Eles são usados para escapar os parênteses.</p><p>Precisamos escapar <code>(</code> e <code>)</code>, pois eles são caracteres especiais usados no regex para capturar partes dos textos que corresponderam. Porém, precisamos corresponder aos caracteres de parênteses.</p><p>Na <em>regex</em> anterior, definimos dois parâmetros de nossa chamada de método com os símbolos <code>.*?</code>. Vamos fazer cada um dos nossos parâmetros um <strong>grupo de<strong> </strong>captura </strong>separado, adicionando os símbolos<code>(</code> e <code>)</code> ao redor deles:</p><pre><code>loadScript\((.*?),(.*?)\)</code></pre><p>Se você executar essa <em>regex</em>, você verá que nada mudou. Isso é porque ela corresponde ao mesmo texto. Agora, contudo, podemos referenciar o primeiro argumento com <code>$1</code> e o segundo argumento com <code>$2</code>. Isso é chamado de <em>backreference</em> (em português, referência prévia), e nos ajudará com o que queremos: adicionar outro parâmetro no meio da chamada.</p><p>Input de busca:</p><pre><code>loadScript\((.*?),(.*?)\)</code></pre><p>Isso significa a mesma coisa que a <em>regex</em> anterior, mas mapeia os parâmetros para capturar os grupos 1 e 2, respectivamente.</p><p>Input de substituição:</p><pre><code>loadScript($1,id,$2)</code></pre><p>Isso significa <em>"substitua tudo que corresponda a<em> </em></em><code><em>"<em>loadScript(</em>"</em></code><em><em> </em></em>seguido pelo grupo de caracteres capturados 1<em><em>, </em></em><code><em>"<em>id</em></em></code><em><em>,</em> </em>grupo de caracteres capturados<em><em> 2 </em>e<em> </em></em><code><em><em>)</em></em></code><em>"<em>. </em></em>Observe que você não precisa escapar os parênteses no input de substituição.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/05/w27UNrc7N2hkWAO1DmU6p0gulIYiwU-oYjpT.png" class="kg-image" alt="w27UNrc7N2hkWAO1DmU6p0gulIYiwU-oYjpT" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2023/05/w27UNrc7N2hkWAO1DmU6p0gulIYiwU-oYjpT.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2023/05/w27UNrc7N2hkWAO1DmU6p0gulIYiwU-oYjpT.png 800w" sizes="(min-width: 720px) 720px" width="800" height="354" loading="lazy"><figcaption>Resultado da substituição</figcaption></figure><h3 id="5-classe-de-caracteres"><strong>5) [ ] — Classe de caracteres</strong></h3><p>Você pode listar caracteres que você quer corresponder a uma posição especifica colocando os símbolos <code>[</code> e <code>]</code> ao redor desses caracteres. Por exemplo, a classe <code>[0-9]</code> corresponde a todos os dígitos de 0 a 9. Você também pode listar os dígitos explicitamente: <code>[0123456789]</code> — o significado é o mesmo. Você pode usar o <code>-</code> com letras também. <code>[a-z]</code> vai corresponder a todos os caracteres minúsculos,<code>[A-Z]</code> corresponderá a todos os caracteres maiúsculos e <code>[a-zA-Z]</code> corresponderá a ambos.</p><p>Você também pode usar o <code>*</code> depois de uma classe de caracteres igual ao <code>.</code>, o que significa: <em>"corresponda a qualquer número de ocorrências dos caracteres dessa classe".</em></p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/05/2aTqw0lDyht0cE1gqoF3O5eYcemyzhIBhSzU.png" class="kg-image" alt="2aTqw0lDyht0cE1gqoF3O5eYcemyzhIBhSzU" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2023/05/2aTqw0lDyht0cE1gqoF3O5eYcemyzhIBhSzU.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2023/05/2aTqw0lDyht0cE1gqoF3O5eYcemyzhIBhSzU.png 800w" sizes="(min-width: 720px) 720px" width="800" height="463" loading="lazy"><figcaption>expect.*to.equal\([0–9]*\): Corresponde apenas às linhas em que esperamos que a variável testada seja igual a um número</figcaption></figure><h3 id="conclus-o"><strong>Conclusão</strong></h3><p>Você precisa saber que existem vários tipos de <em>regex</em>. Esta que discutimos aqui é a <em>regex</em> da <em>engine</em> do JavaScript. A maioria das <em>engines </em>modernas é semelhante, mas pode haver algumas diferenças. Normalmente, essas diferenças incluem o caractere de escape e marcadores de refências prévias.</p><p>Eu encorajo você a abrir seu editor de texto e começar a usar alguns desses truques agora mesmo. Você verá que, agora, você consegue completar muitas tarefas de refatoração muito mais rapidamente do que antes. Quando se sentir confortável, <a href="https://www.regular-expressions.info/" rel="noopener">pode começar a pesquisar mais sobre expressões regulares</a> (texto em inglês).</p><p><strong>Obrigado pela leitura deste artigo até o final<strong>. </strong>Se achou o artigo útil, compartilhe-o<strong>. </strong>Futuramente, publicarei mais artigos sobre expressões regulares<strong>, </strong>J<strong>ava</strong>S<strong>cript </strong>e programação em geral<strong>.</strong></strong></p> ]]>
                </content:encoded>
            </item>
        
    </channel>
</rss>
