<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>InformatiqueZ &#187; regex</title>
	<atom:link href="http://www.brasiltech.net/informatiquez/tag/regex/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.brasiltech.net/informatiquez</link>
	<description>Informática, Tecnologia, Dicas e Afins.</description>
	<lastBuildDate>Thu, 13 Aug 2009 23:55:19 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Mini-Curso de Express&#245;es Regulares &#8211; Parte 3 &#8211; Tags HTML</title>
		<link>http://www.brasiltech.net/informatiquez/2008/04/22/mini-curso-de-regex-expressoes-regulares-parte-3-tags-html/</link>
		<comments>http://www.brasiltech.net/informatiquez/2008/04/22/mini-curso-de-regex-expressoes-regulares-parte-3-tags-html/#comments</comments>
		<pubDate>Tue, 22 Apr 2008 06:06:33 +0000</pubDate>
		<dc:creator>Douglas Cunha</dc:creator>
				<category><![CDATA[Programação]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[expressão regular]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[regex]]></category>
		<category><![CDATA[tag]]></category>

		<guid isPermaLink="false">http://www.brasiltech.net/informatiquez/2008/04/22/mini-curso-de-regex-expressoes-regulares-parte-3-tags-html/</guid>
		<description><![CDATA[
Olá. Bem vindo a terceira parte do nosso mini-curso de expressões regulares. Na primeira parte do curso nós vimos algumas funções para arquivos de log (veja a primeira parte do mini-curso de expressões regulares) e, na segunda, aprendemos como é fácil validar um email com regex, de várias formas, restringindo domínios, caracteres antes e depois [...]]]></description>
			<content:encoded><![CDATA[<p><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" src="http://www.brasiltech.net/informatiquez/wp-content/uploads/2008/04/regexbuddy-pt3.gif" border="0" alt="" width="322" height="313" /></p>
<p>Olá. Bem vindo a terceira parte do nosso mini-curso de expressões regulares. Na primeira parte do curso nós vimos algumas funções para arquivos de log (veja a primeira parte do <a href="http://www.brasiltech.net/informatiquez/2008/04/09/mimi-curso-de-expressoes-regulares-entenda-como-funciona-parte-1/" target="_blank">mini-curso de expressões regulares</a>) e, na segunda, aprendemos como é fácil validar um email com regex, de várias formas, restringindo domínios, caracteres antes e depois do arroba. Se você ainda não viu, não deixe de dar uma olhada: <a href="http://www.brasiltech.net/informatiquez/2008/04/14/mini-curso-de-expressao-regular-entenda-como-funciona-parte-2-validando-emails/" target="_blank">mini-curso de expressões regulares &#8211; parte 2 &#8211; validando emails</a>.<br />
Nessa terceira parte do mini-curso de expressões regulares, vamos estudar algumas expressões para trabalhar com tags html. Como se trata de um mini-curso, a idéia é apenas introduzir o assunto, de forma que você consiga desenvolver suas próprias expressões. Mas é lógico que para isso você precisa praticar, por mais simples que pareça, apenas praticando é que o nosso cérebro armazena definitivamente o conteúdo visto. Está pronto? Então, mãos à obra!</p>
<p><span id="more-379"></span></p>
<p>Novamente, para praticar os exemplos vistos aqui, sugiro o uso do aplicativo online de regex, disponível em <a title="http://gskinner.com/RegExr/" rel="nofollow" href="http://gskinner.com/RegExr/" target="_blank">http://gskinner.com/RegExr/</a></p>
<p>Caso você não esteja familiarizado com o conceito de HTML, recomendo que leia o artigo da wikipédia sobre <a rel="nofollow" href="http://pt.wikipedia.org/wiki/HTML" target="_blank">HTML</a> para entender o que são tags HTML.</p>
<p>A nossa primeira expressão tem como objetivo casar caracteres que representam qualquer tag html, tanto de abertura, como de fechamendo, com ou sem parâmetros. Veja pela figura abaixo, com as devidas explicações:</p>
<p><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" src="http://www.brasiltech.net/informatiquez/wp-content/uploads/2008/04/regex-1-copy.gif" border="0" alt="Mini-curso de Expressões Regulares Parte 3" width="400" height="231" /></p>
<p>Veja ela em ação:</p>
<p><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" src="http://www.brasiltech.net/informatiquez/wp-content/uploads/2008/04/regex-1-ex.jpg" border="0" alt="Mini-curso de Expressões Regulares Parte 3" width="474" height="417" /></p>
<p>Podemos modificar a mesma expressão para buscar somente tags de abertura. Para isso, basta acrescentar a barra de fechamento de tag à lista<strong> []</strong>, após o caracter <strong>&lt;</strong>. Ficaria assim:</p>
<p><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" src="http://www.brasiltech.net/informatiquez/wp-content/uploads/2008/04/regex-3-copy.gif" border="0" alt="Mini-curso de Expressões Regulares Parte 3" width="400" height="231" /></p>
<p>E, de forma semelhante, basta colocarmos a barra de fechamento de tags para fora do grupo e teríamos uma expressão que casa somente tags de fechamento. Essa eu vou deixar para você experimentar.</p>
<p>Conseguiu? Espero que sim. Agora o desafio é construirmos uma expressão que case uma tag toda, ou seja, a abertura, os dados que estão dentro da tag, e o fechamento. Veja como ficaria uma expressão regular para casar toda a tag HEAD, com abertura e fechamento:</p>
<p><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" src="http://www.brasiltech.net/informatiquez/wp-content/uploads/2008/04/regex-2-copy.gif" border="0" alt="Mini-curso de Expressões Regulares Parte 3" width="458" height="288" /></p>
<p>E abaixo, a nossa expressão regular em ação!</p>
<p><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" src="http://www.brasiltech.net/informatiquez/wp-content/uploads/2008/04/regex-2-ex.jpg" border="0" alt="Mini-curso de Expressões Regulares Parte 3" width="477" height="416" /></p>
<p>Como desafio, deixo para vocês a tarefa de criar uma expressão regular que case tanto a tag HEAD quanto a tag H1. E outra que case somente o conteúdo que está entre as tags &lt;H1&gt; &lt;/H1&gt;, ou seja, apenas a frase &#8220;Meu site de teste&#8221;. Boa sorte.</p>
<p><strong>A pedidos:</strong></p>
<blockquote><p>(&lt;head&gt;|&lt;h1&gt;)(.|\s)+?(&lt;/head&gt;|&lt;/h1&gt;)</p></blockquote>
<p>e</p>
<blockquote><p>&lt;h1&gt;(.|\s)+?&lt;/h1&gt;</p></blockquote>
<h3  class="related_post_title">Veja também!</h3><ul class="related_post"><li><a href="http://www.brasiltech.net/informatiquez/2008/04/14/mini-curso-de-expressao-regular-entenda-como-funciona-parte-2-validando-emails/" title="Mini-Curso de Express&otilde;es Regulares &#8211; Entenda como Funciona &#8211; Parte 2 &#8211; Validando Emails">Mini-Curso de Express&otilde;es Regulares &#8211; Entenda como Funciona &#8211; Parte 2 &#8211; Validando Emails</a> (0)</li><li><a href="http://www.brasiltech.net/informatiquez/2008/04/09/mimi-curso-de-expressoes-regulares-entenda-como-funciona-parte-1/" title="Mini-Curso de Express&otilde;es Regulares &#8211; Entenda como Funciona &#8211; Parte 1">Mini-Curso de Express&otilde;es Regulares &#8211; Entenda como Funciona &#8211; Parte 1</a> (8)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.brasiltech.net/informatiquez/2008/04/22/mini-curso-de-regex-expressoes-regulares-parte-3-tags-html/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Mini-Curso de Express&#245;es Regulares &#8211; Entenda como Funciona &#8211; Parte 2 &#8211; Validando Emails</title>
		<link>http://www.brasiltech.net/informatiquez/2008/04/14/mini-curso-de-expressao-regular-entenda-como-funciona-parte-2-validando-emails/</link>
		<comments>http://www.brasiltech.net/informatiquez/2008/04/14/mini-curso-de-expressao-regular-entenda-como-funciona-parte-2-validando-emails/#comments</comments>
		<pubDate>Mon, 14 Apr 2008 06:00:07 +0000</pubDate>
		<dc:creator>Douglas Cunha</dc:creator>
				<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[expressão regular]]></category>
		<category><![CDATA[regex]]></category>
		<category><![CDATA[validar]]></category>

		<guid isPermaLink="false">http://www.brasiltech.net/informatiquez/2008/04/14/mini-curso-de-expresses-regulares-entenda-como-funciona-parte-2-validando-emails/</guid>
		<description><![CDATA[
Nessa segunda parte do mini-curso de expressões regulares, irei apresentar algumas expressões que podem ser usadas para validar emails. Entre as possibilidades existentes, podemos manipular uma regex para validar apenas emails de um determinado domínio, restringir caracteres antes e depois do arroba, ignorar letras maiúsculas e muito mais. Essa é uma grande vantagem de se [...]]]></description>
			<content:encoded><![CDATA[<p><img style="http://www.brasiltech.net/informatiquez/wp-admin/border-right-color: #000000; border-right-width: 0px; border-right-style: none; border-top-color: #000000; border-top-width: 0px; border-top-style: none; border-left-color: #000000; border-left-width: 0px; border-left-style: none; border-bottom-color: #000000; border-bottom-width: 0px; border-bottom-style: none" src="http://www.brasiltech.net/informatiquez/wp-content/uploads/2008/04/regexbuddy-copy.gif" border="0" alt="Validando Emails" width="322" height="313" /></p>
<p>Nessa segunda parte do <a title="Mini-Curso de Expressões Regulares - Entenda como Funciona - Parte 1" href="http://www.brasiltech.net/informatiquez/2008/04/09/mimi-curso-de-expressoes-regulares-entenda-como-funciona-parte-1/" target="_blank">mini-curso de expressões regulares</a>, irei apresentar algumas expressões que podem ser usadas para validar emails. Entre as possibilidades existentes, podemos manipular uma regex para validar apenas emails de um determinado domínio, restringir caracteres antes e depois do arroba, ignorar letras maiúsculas e muito mais. Essa é uma grande vantagem de se usar expressões regulares: você pode moldar a expressão para atender exatamente a sua necessidade. E, uma vez que a expressão esteja criada, é muito fácil testá-la e validá-la, pois existem muitas ferramentas para isso, inclusive sites web 2.0, onde basta colocar a expressão e verificar o resultado. Como ja disse no artigo anterior, o nosso estudo se fixará apenas na expressão regular, ou seja, não vou abordar ferramentas de regex nem como você poderá incluir regex em seu site ou aplicativo win32, mas já adianto que existem muitas ferramentas de regex para você incorporá-la a sua plataforma de desenvolvimento, se por ventura ela não suportar. Caso tenha chegado a esse artigo sem ler a parte 1, recomendo que a leia: <a title="Mini-Curso de Expressões Regulares - Entenda como Funciona - Parte 1" href="http://www.brasiltech.net/informatiquez/2008/04/09/mimi-curso-de-expressoes-regulares-entenda-como-funciona-parte-1/" target="_blank">Mini-Curso de Expressões Regulares &#8211; Entenda como Funciona &#8211; Parte 1</a>.</p>
<p>Existem várias formas de validar um email, inclusive com expressões regulares. Se você procurar no Google, vai encontrar diversas variações de regex para esse fim, cada uma com uma peculiaridade. As formas que apresentarei aqui não são as únicas e nem as melhores. O meu intuito, quando criei essas expressões, foi que elas fossem as mais simples e eficientes possíveis, para que não ficasse complicado demais desenvolver uma explicação didática.</p>
<p><span id="more-366"></span></p>
<p>Para começar, acesse o site <a rel="nofollow" href="http://gskinner.com/RegExr/" target="_blank">gskinner</a> e digite alguns endereços de email no local apropriado (abaixo do campo de digitação da regex). Não vou sugerir uma lista aqui para evitar ação de spammers.</p>
<p>Agora, vamos definir algumas regras para que um email seja válido (podem ter mais, essas são só para exemplo).</p>
<ol>
<li>deve ter pelo menos 3 letras antes do @;</li>
<li>antes do @ pode conter o caracter ponto (.), hífem (-) ou sublinhado (_);</li>
<li>tem que conter o caracter arroba(@);</li>
<li>tem que ter pelo menos 2 letras antes do ponto e depois do arroba;</li>
<li>tem que terminar com o tipo de domínio (com, net, info, org&#8230;);</li>
<li>pode, eventualmente, terminar com 2 caracteres, que seriam a sigla do país (br, uk&#8230;).</li>
</ol>
<p>De posse dessas regras, vamos definir uma expressão regular que case uma string que atenta a esses seis requisitos básicos.</p>
<p><strong>Regras 1, 2 e 3</strong></p>
<p><img style="http://www.brasiltech.net/informatiquez/wp-admin/border-right-color: #000000; border-right-width: 0px; border-right-style: none; border-top-color: #000000; border-top-width: 0px; border-top-style: none; border-left-color: #000000; border-left-width: 0px; border-left-style: none; border-bottom-color: #000000; border-bottom-width: 0px; border-bottom-style: none" src="http://www.brasiltech.net/informatiquez/wp-content/uploads/2008/04/regex-pt1-copy.gif" border="0" alt="Mini-curso de Expressão Regular" width="403" height="300" /></p>
<p><strong>Regra 4</strong></p>
<p><img style="http://www.brasiltech.net/informatiquez/wp-admin/border-right-color: #000000; border-right-width: 0px; border-right-style: none; border-top-color: #000000; border-top-width: 0px; border-top-style: none; border-left-color: #000000; border-left-width: 0px; border-left-style: none; border-bottom-color: #000000; border-bottom-width: 0px; border-bottom-style: none" src="http://www.brasiltech.net/informatiquez/wp-content/uploads/2008/04/regex-pt3-copy.gif" border="0" alt="Mini-curso de Expressão Regular" width="368" height="227" /></p>
<p><strong>Regra 5</strong></p>
<p><img style="http://www.brasiltech.net/informatiquez/wp-admin/border-right-color: #000000; border-right-width: 0px; border-right-style: none; border-top-color: #000000; border-top-width: 0px; border-top-style: none; border-left-color: #000000; border-left-width: 0px; border-left-style: none; border-bottom-color: #000000; border-bottom-width: 0px; border-bottom-style: none" src="http://www.brasiltech.net/informatiquez/wp-content/uploads/2008/04/regex-pt4-copy.gif" border="0" alt="Mini-curso de Expressão Regular" width="306" height="237" /></p>
<p><strong>Regra 6</strong></p>
<p><img style="http://www.brasiltech.net/informatiquez/wp-admin/border-right-color: #000000; border-right-width: 0px; border-right-style: none; border-top-color: #000000; border-top-width: 0px; border-top-style: none; border-left-color: #000000; border-left-width: 0px; border-left-style: none; border-bottom-color: #000000; border-bottom-width: 0px; border-bottom-style: none" src="http://www.brasiltech.net/informatiquez/wp-content/uploads/2008/04/regex-pt5-copy.gif" border="0" alt="Mini-curso de Expressão Regular" width="428" height="300" /></p>
<p>Conseguiu acompanhar o passo-a-passo? Realmente não é muito complicado,mas para isso você tem que praticar e experimentar, por isso não disponibilizei a expressão para você copiar no início. A ídeia é que você digite os caracteres da expressão e com isso vá se familiarizando com elas. Veja abaixo como ficou a nossa expressão completa:</p>
<blockquote><p><span style="font-size: medium;">[a-z-\._0-9]{3,}@[a-z]{2,}\.(com|net|info)(\.[a-z]{2})?</span></p></blockquote>
<p>Algumas observações:  Dentro de uma lista (marcadores []), o metacaracter ponto (.) não é mais um metacaracter, portando o uso da barra para forçar o caracter literal não é obrigatório. Ainda dentro de uma lista, alguns livros recomendam usar o hífem (-) no final &#8221;[a-z0-9._-]&#8220;.<br />
Agora tente modificar os critérios. Melhore-a, ache bugs, corrija-a. Se estiver achando muito fácil, tente construir uma expressão para validar um número de CEP, um CPF ou um número de telefone. No próximo artigo iremos trabalhar com tags HTML. Espero que aproveitem.</p>
<h3  class="related_post_title">Veja também!</h3><ul class="related_post"><li><a href="http://www.brasiltech.net/informatiquez/2008/04/22/mini-curso-de-regex-expressoes-regulares-parte-3-tags-html/" title="Mini-Curso de Express&otilde;es Regulares &#8211; Parte 3 &#8211; Tags HTML">Mini-Curso de Express&otilde;es Regulares &#8211; Parte 3 &#8211; Tags HTML</a> (2)</li><li><a href="http://www.brasiltech.net/informatiquez/2008/04/09/mimi-curso-de-expressoes-regulares-entenda-como-funciona-parte-1/" title="Mini-Curso de Express&otilde;es Regulares &#8211; Entenda como Funciona &#8211; Parte 1">Mini-Curso de Express&otilde;es Regulares &#8211; Entenda como Funciona &#8211; Parte 1</a> (8)</li><li><a href="http://www.brasiltech.net/informatiquez/2008/02/21/como-cadastrar-seu-blog-ou-site-em-varios-mecanismos-de-busca-de-uma-vez-submitforce/" title="Como cadastrar seu blog ou site em v&aacute;rios mecanismos de busca de uma vez">Como cadastrar seu blog ou site em v&aacute;rios mecanismos de busca de uma vez</a> (13)</li><li><a href="http://www.brasiltech.net/informatiquez/2008/02/18/como-verificar-a-existencia-de-emails-rapidamente/" title="Como verificar a exist&ecirc;ncia de emails rapidamente">Como verificar a exist&ecirc;ncia de emails rapidamente</a> (0)</li><li><a href="http://www.brasiltech.net/informatiquez/2008/01/16/se-livre-dos-spams-com-boas-praticas-parte-final/" title="Se livre dos Spams com boas Pr&aacute;ticas &#8211; Parte Final">Se livre dos Spams com boas Pr&aacute;ticas &#8211; Parte Final</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.brasiltech.net/informatiquez/2008/04/14/mini-curso-de-expressao-regular-entenda-como-funciona-parte-2-validando-emails/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mini-Curso de Express&#245;es Regulares &#8211; Entenda como Funciona &#8211; Parte 1</title>
		<link>http://www.brasiltech.net/informatiquez/2008/04/09/mimi-curso-de-expressoes-regulares-entenda-como-funciona-parte-1/</link>
		<comments>http://www.brasiltech.net/informatiquez/2008/04/09/mimi-curso-de-expressoes-regulares-entenda-como-funciona-parte-1/#comments</comments>
		<pubDate>Wed, 09 Apr 2008 15:25:42 +0000</pubDate>
		<dc:creator>Douglas Cunha</dc:creator>
				<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[efetividade]]></category>
		<category><![CDATA[dicas]]></category>
		<category><![CDATA[er]]></category>
		<category><![CDATA[expressão regular]]></category>
		<category><![CDATA[regex]]></category>

		<guid isPermaLink="false">http://www.brasiltech.net/informatiquez/2008/04/09/mimi-curso-de-expressoes-regulares-entenda-como-funciona-parte-1/</guid>
		<description><![CDATA[ 
É muito comum encontrar programadores ou especialistas em TI que não conhecem ou não sabem como utilizar expressões regulares. Eu mesmo estou incluído entre eles, pois até então, apesar de conhecer essa poderosa ferramenta, nunca dediquei algum tempo a compreender sua engenharia e conceitos. O intuíto desse artigo não é, de forma alguma, esgotar [...]]]></description>
			<content:encoded><![CDATA[<p><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="313" alt="RegexBuddy" src="http://www.brasiltech.net/informatiquez/wp-content/uploads/2008/04/regexbuddy.gif" width="322" border="0"/> </p>
<p>É muito comum encontrar programadores ou especialistas em TI que não conhecem ou não sabem como utilizar expressões regulares. Eu mesmo estou incluído entre eles, pois até então, apesar de conhecer essa poderosa ferramenta, nunca dediquei algum tempo a compreender sua engenharia e conceitos. O intuíto desse artigo não é, de forma alguma, esgotar o assunto, mas apenas introduzir o conceito e uso de expressões regulares para aqueles que não conhecem ou por algum motivo ainda não conseguiram aprender. Vamos começar? </p>
<p>Da Wikipedia, a definição de <a href="http://pt.wikipedia.org/wiki/Express&atilde;o_regular" target="_blank" rel="nofollow">Expressões Regulares</a>:</p>
<blockquote><p>Uma expressão regular, na Informática, define um padrão a ser usado para procurar ou substituir palavras ou grupos de palavras. É um meio preciso de se fazer buscas de determinadas porções de texto.</p>
</blockquote>
<p>Em outras palavras, com expressões regulares você pode:</p>
<ul>
<li>procurar um texto que você não se lembra exatamente como é, mas tem idéia das variações possíveis (pesquisar em extensos arquivos de logs vai ser moleza!);  </li>
<li>procurar um trecho em posições específicas, como no começo ou no fim de uma palavra, linha, parágrafo;  </li>
<li>especificar padrões complexos que podem ser buscados e casados em uma cadeia de caracteres (validar CPF, email, CNPJ, CEP e muitos outros);  </li>
<li>o que mais sua imaginação ou necessidade pedir. </li>
</ul>
<p>Já está ansioso para pular a teoria e ir para a prática? &#8220;Então la vamos nós!&#8221;</p>
<p><span id="more-355"></span></p>
<p>&nbsp;</p>
<p>Para treinar os exemplos demonstrados aqui, sugiro o site gskinner, para <a href="http://gskinner.com/RegExr/" target="_blank" rel="nofollow">testar expressões regulares online</a>.</p>
<p>Antes de começar com um exemplo prático, conheça os metacaracteres usados pelas expressões regulares. Não vou detalhar a função de cada um agora. Isso é conteúdo para vários artigos. Nesse artigo iremos utilizar apenas alguns deles.</p>
<blockquote><p>.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ponto <br />[]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lista <br />[^]&nbsp;&nbsp;&nbsp;&nbsp; lista negada <br />?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; opcional <br />*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; asterisco <br />+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mais <br />{}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; chaves <br />^&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; circunflexo <br />$&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cifrão <br />\b&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; borda <br />\&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; escape <br />|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ou <br />()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; grupo <br />\1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; retrovisor</p>
</blockquote>
<p>Mas o qué é um metacaracter? Metacaracteres são caracteres que desempenham funções específicas &#8211; dependendo do contexto, ao contrário de um caracter literal. </p>
<p>No primeiro exemplo, temos um arquivo de log com várias linhas, representando o horário que cada usuário acessou um determinado sistema em um certo dia:</p>
<blockquote><p>05:15&nbsp; ernesto<br />08:39&nbsp; ricardo<br />10:32&nbsp; patricia<br />14:00&nbsp; gabriel<br />16:05&nbsp; paulo <br />22:14&nbsp; marcelo</p>
</blockquote>
<p>Queremos uma expressão regular que selecione todos os usuários que acessaram o sistema&nbsp; entre as dez horas da manhã e as seis horas da tarde.&nbsp; Existem várias formas de fazer, e uma delas seria essa:</p>
<p><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="215" alt="Express&atilde;o Regular" src="http://www.brasiltech.net/informatiquez/wp-content/uploads/2008/04/primeira.jpg" width="474" border="0"/> </p>
<p>Complicou? O jeito mais fácil de aprender é ir praticando. Se não abriu o site indicado para fazer os testes, abra agora, digite a lista que passei no exemplo e coloque a expressão regular lá.</p>
<p><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="199" alt="Express&atilde;o Regular" src="http://www.brasiltech.net/informatiquez/wp-content/uploads/2008/04/regex11.jpg" width="246" border="0"/> </p>
<p>Agora faça uma expressão regular que encontre todos os usuários que acessaram o sistema entre zero horas e nove horas. Como ficaria?</p>
<p><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="218" alt="segunda" src="http://www.brasiltech.net/informatiquez/wp-content/uploads/2008/04/segunda.jpg" width="480" border="0"/> </p>
<p>- Mas peraí! Eu fiz diferente. </p>
<p>É, eu sei. Você não usou o caracter <strong>^ </strong>no inicio da expressão. Esse caracter quer dizer que o padrão procurado está no inicio de uma linha. Veja que omiti dessa vez o &#8220;sinal de dois pontos&#8221; da expressão, pois sei que, nesse caso,&nbsp; sempre que houver dois números no inicio da linha, existe uma hora. Os demais termos dessa expressão seguiram a lógica da expressão regular que mostrei anteriormente. Outra coisa diferente é o sinal de <strong>mais</strong> (+) logo depois do ponto. Repare que o ponto sempre está acompanhado. Nesse caso o sinal de <strong>+</strong> impõe uma condição: tem que existir o terceiro caracter para que o texto procurado &#8220;case&#8221; com o padrão. Dessa forma o texto <strong>00:01 </strong>casaria, mas o texto <strong>00 </strong>não.<br />Podemos deixar a expressão mais precisa ainda incrementando a expressão regular para checar se o restante do texto é uma hora completa ou não. Veja como ficaria:</p>
<p><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="195" alt="exemplo2" src="http://www.brasiltech.net/informatiquez/wp-content/uploads/2008/04/exemplo2.jpg" width="249" border="0"/> </p>
<p>Dessa vez não vou explicar detalhadamente, pois os conceitos envolvidos nessa expressão foram os que ja vimos nos últimos exemplos. </p>
<p>Agora que você já tem algum conhecimento e prática de criação e uso de expressões regulares, utilize o site indicado ou outra ferramenta de seu gosto, e pratique com outras variações de textos e expressões, pois somente assim é que vai incorporar definitivamente o que acabou de aprender aqui. Conforme alertei no início do artigo, não foi minha intenção esgotar o assunto, mas, se esse artigo serviu para desmistificar alguns tabus que você tinha sobre regex, e de quebra já fez com que você conseguisse aplicar algo em seu dia-a-dia, então posso dizer que o objetivo foi alcançado. Em breve publicarei a segunda parte e avançaremos um pouco mais com expressões mais complexas para localizar tags em arquivos HTML e muito mais. Dicas e críticas são bem vindas. </p>
<h3  class="related_post_title">Veja também!</h3><ul class="related_post"><li><a href="http://www.brasiltech.net/informatiquez/2008/04/22/mini-curso-de-regex-expressoes-regulares-parte-3-tags-html/" title="Mini-Curso de Express&otilde;es Regulares &#8211; Parte 3 &#8211; Tags HTML">Mini-Curso de Express&otilde;es Regulares &#8211; Parte 3 &#8211; Tags HTML</a> (2)</li><li><a href="http://www.brasiltech.net/informatiquez/2008/04/14/mini-curso-de-expressao-regular-entenda-como-funciona-parte-2-validando-emails/" title="Mini-Curso de Express&otilde;es Regulares &#8211; Entenda como Funciona &#8211; Parte 2 &#8211; Validando Emails">Mini-Curso de Express&otilde;es Regulares &#8211; Entenda como Funciona &#8211; Parte 2 &#8211; Validando Emails</a> (0)</li><li><a href="http://www.brasiltech.net/informatiquez/2008/04/07/dicas-tudo-de-excel-funcoes-formulas-de-data-e-hora/" title="Dicas de Excel &#8211; Fun&ccedil;&otilde;es de Data e Hora">Dicas de Excel &#8211; Fun&ccedil;&otilde;es de Data e Hora</a> (43)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.brasiltech.net/informatiquez/2008/04/09/mimi-curso-de-expressoes-regulares-entenda-como-funciona-parte-1/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.507 seconds -->
