<?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>salsotto.com » difundindo ideias na web &#187; Expressões Regulares</title>
	<atom:link href="http://blog.salsotto.com/category/expressoes-regulares/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.salsotto.com</link>
	<description>Quando uma boa ideia acontece e seu comodismo a desperdiça, você estará em dívida contigo e com a humanidade.&#34; ( Ivan Teorilang )</description>
	<lastBuildDate>Mon, 09 Jan 2012 03:01:49 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Classes de caracteres em Expressões Regulares</title>
		<link>http://blog.salsotto.com/2009/11/19/classes-de-caracteres-em-expressoes-regulares/</link>
		<comments>http://blog.salsotto.com/2009/11/19/classes-de-caracteres-em-expressoes-regulares/#comments</comments>
		<pubDate>Thu, 19 Nov 2009 16:18:29 +0000</pubDate>
		<dc:creator>Salsotto</dc:creator>
				<category><![CDATA[Expressões Regulares]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://blog.salsotto.com/?p=531</guid>
		<description><![CDATA[A língua brasileira é rica em caractecteres acentuados, e isso é uma questão que os metacaracteres não tratam especificamente quando necessário criar expressões regulares, sendo necessário utilizar de um meio alternativo,&#160; que nada mais&#160; são do que as classes de caracteres providas pelo padrão POSIX.
O POSIX é um padrão internacional que  define normas para [...]]]></description>
			<content:encoded><![CDATA[<p>A língua brasileira é rica em caractecteres acentuados, e isso é uma questão que os metacaracteres não tratam especificamente quando necessário criar expressões regulares, sendo necessário utilizar de um meio alternativo,&nbsp; que nada mais&nbsp; são do que as classes de caracteres providas pelo padrão POSIX.</p>
<p>O POSIX é um padrão internacional que  define normas para garantir a portabilidade do código-fonte de um programa a partir de um sistema operacional. Hã!?&nbsp; Deixe-me tentar explicar de uma outra forma já utilizando as classes.</p>
<p>O uso das classes de caracteres&nbsp; levam em conta  a localidade do sistema operacional, seguindo algumas premissas como o idioma utilizado no sistema operacional, e isso só ocorre porque o padrão POSIX da suporte a portabilidade de idiomas.</p>
<h2>Lista de classes:</h2>
<ul>
<li><strong>[:digit:]&nbsp; </strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <em>Dígitos de 0 até 9</em></li>
<li><strong>[:alnum:]</strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <em>Caracteres alfanuméricos de 0 até 9 ou A até Z ou a até z.</em></li>
<li><strong>[:alpha:]&nbsp;&nbsp;</strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <em>Caracteres alfabéticos de A até Z ou a até z.</em></li>
<li><strong>[:blank:]&nbsp; &nbsp;</strong> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <em>Caracteres de espaço e tabulação.</em></li>
<li><strong>[:xdigit:]&nbsp;</strong>&nbsp;&nbsp;<em>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dígitos hexadecimais</em></li>
<li><strong>[:punct:]</strong>&nbsp;&nbsp;&nbsp;<em>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Símbolos de pontuação . , &#8221; &#8216; ? ! ; :</em></li>
<li><strong>[:print:]&nbsp;&nbsp;</strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <em>Todos os caracteres que podem ser impressos.</em></li>
<li><strong>[:space:]</strong>&nbsp;&nbsp;&nbsp;<em>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Caracteres de espaço.</em></li>
<li><strong>[:graph:]&nbsp;</strong> &nbsp;&nbsp; <em>&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Todos os caracteres impressos, menos espaço.</em></li>
<li><strong>[:upper:]</strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; &nbsp;&nbsp;&nbsp;&nbsp; <em>Caracteres alfabéticos maiúsculos de A até Z.</em></li>
<li><strong>[:lower:]&nbsp;</strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<em>&nbsp; &nbsp; &nbsp;&nbsp; Caracteres minúsculos de a até z.</em></li>
<li><strong>[:cntrl:]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </strong>&nbsp; &nbsp; &nbsp; <em>Caracteres de control.</em></li>
</ul>
<h2>Exemplo</h2>
<p>Imaginemos que utilizariamos a classe [:lower:] em um sistema operacional com o idioma em inglês, isso não seria de muito uso para expressões regulares com caracteres acentuados, sendo que a classe seria equivalente a [a-z]. Agora utilizando a mesma classe [:lower:] com idioma em português, teriamos o equivalente a [a-záãâàêéóúçõ...]. Um fato observável é que isso serve para as outras classes de caracteres. (<a title="Lista de Metacaracteres" href="http://blog.salsotto.com/2009/11/08/um-pouquinho-sobre-expressoes-regulares/" target="_blank">lista de metacaracteres</a>)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.salsotto.com/2009/11/19/classes-de-caracteres-em-expressoes-regulares/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Um pouquinho sobre Expressões Regulares</title>
		<link>http://blog.salsotto.com/2009/11/08/um-pouquinho-sobre-expressoes-regulares/</link>
		<comments>http://blog.salsotto.com/2009/11/08/um-pouquinho-sobre-expressoes-regulares/#comments</comments>
		<pubDate>Mon, 09 Nov 2009 02:51:43 +0000</pubDate>
		<dc:creator>Salsotto</dc:creator>
				<category><![CDATA[Expressões Regulares]]></category>

		<guid isPermaLink="false">http://blog.salsotto.com/?p=317</guid>
		<description><![CDATA[


Símbolo
Significado




.
Qualquer caractere


\s
Espaço em branco, \n \r ou \t


\S
Negacão de \s. Não pode ser espaço em branco, \n \r ou \t


\d
Qualquer dígito


\D
Negação de \d. Não pode ser dígito


[0-9]
Qualquer dígito


[^0-9]
Não pode ser dígito


[A-Z]
Qualquer letra maiúscula


[^A-Z]
Não pode ter letra maiúscula


[À-Ú]
Qualquer letra maiúscula com acentuo


[a-z]
Qualquer letra minúscula


[^a-z]
Não pode ser letra minúscula


[à-ú]
Qualquer letra minúscula com com acentuo


[A-Za-z]
Qualquer letra maiúscula ou [...]]]></description>
			<content:encoded><![CDATA[<table style="padding: 0pt;" border="0" cellspacing="0" cellpadding="4" width="99%">
<thead style="background: #5a636c none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; color: #ffffff;">
<tr>
<th>Símbolo</th>
<th>Significado</th>
</tr>
</thead>
<tbody>
<tr>
<td width="120">.</td>
<td>Qualquer caractere</td>
</tr>
<tr>
<td>\s</td>
<td>Espaço em branco, \n \r ou \t</td>
</tr>
<tr>
<td>\S</td>
<td>Negacão de \s. Não pode ser espaço em branco, \n \r ou \t</td>
</tr>
<tr>
<td>\d</td>
<td>Qualquer dígito</td>
</tr>
<tr>
<td>\D</td>
<td>Negação de \d. Não pode ser dígito</td>
</tr>
<tr>
<td>[0-9]</td>
<td>Qualquer dígito</td>
</tr>
<tr>
<td>[^0-9]</td>
<td>Não pode ser dígito</td>
</tr>
<tr>
<td>[A-Z]</td>
<td>Qualquer letra maiúscula</td>
</tr>
<tr>
<td>[^A-Z]</td>
<td>Não pode ter letra maiúscula</td>
</tr>
<tr>
<td>[À-Ú]</td>
<td>Qualquer letra maiúscula com acentuo</td>
</tr>
<tr>
<td>[a-z]</td>
<td>Qualquer letra minúscula</td>
</tr>
<tr>
<td>[^a-z]</td>
<td>Não pode ser letra minúscula</td>
</tr>
<tr>
<td>[à-ú]</td>
<td>Qualquer letra minúscula com com acentuo</td>
</tr>
<tr>
<td>[A-Za-z]</td>
<td>Qualquer letra maiúscula ou minúscula</td>
</tr>
<tr>
<td>[^A-Za-z]</td>
<td>Não pode ser letra maiúscula ou minúscula</td>
</tr>
<tr>
<td>[A-ZÀ-Úa-zà-ú]</td>
<td>Qualquer letra maiúscula ou minúscula com ou sem acentuo</td>
</tr>
<tr>
<td>\w</td>
<td>Qualquer letra, dígito ou ‘_’</td>
</tr>
<tr>
<td>\W</td>
<td>Negação de \w. Não ser letra, dígito ou ‘_’</td>
</tr>
<tr>
<td>*</td>
<td>Zero ou mais caracteres</td>
</tr>
<tr>
<td>+</td>
<td>Um ou mais caracteres</td>
</tr>
<tr>
<td>{3,9}</td>
<td>No mínimo três no máximo nove caracteres {mínimo, máximo}</td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://blog.salsotto.com/2009/11/08/um-pouquinho-sobre-expressoes-regulares/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Extrair vídeos do YouTube</title>
		<link>http://blog.salsotto.com/2009/10/29/extrairvideos-do-youtube/</link>
		<comments>http://blog.salsotto.com/2009/10/29/extrairvideos-do-youtube/#comments</comments>
		<pubDate>Thu, 29 Oct 2009 13:23:58 +0000</pubDate>
		<dc:creator>Salsotto</dc:creator>
				<category><![CDATA[Expressões Regulares]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://blog.salsotto.com/?p=312</guid>
		<description><![CDATA[Galeria de vídeos
Pra quem quer desenvolver uma galeria de vídeos, proponho que use o melhor serviço de todos para fazer isso, o YouTube. Com ele você pode facilmente compartilhar seus vídeos na internet, e melhor de tudo, de graça.
Caso tenha interesse em criar uma galeria de vídeos usando os vídeos do YouTube em seu site, [...]]]></description>
			<content:encoded><![CDATA[<h2>Galeria de vídeos</h2>
<p>Pra quem quer desenvolver uma galeria de vídeos, proponho que use o melhor serviço de todos para fazer isso, o <a title="O melhor serviço de videos na internet" href="http://www.youtube.com/" target="_blank">YouTube</a>. Com ele você pode facilmente compartilhar seus vídeos na internet, e melhor de tudo, de graça.</p>
<p>Caso tenha interesse em criar uma galeria de vídeos usando os vídeos do YouTube em seu site, sugiro que faça de uma maneira prática e eficiente, que ao invés de usar o embed(incorporar) que muitas vezes está desabilitado pelos usuários, utilize a própria url do vídeo, pois desse modo conseguirá coloca-lo dentro de sua galeria.</p>
<h2>A função</h2>
<p>Para tal tarefa é necessário que crie uma função que extrai seu vídeo através da url inserida por você, e eis aqui a uma pequena função utilizando expressões regulares para que os vídeos sejam incorporados a sua galeria, espero que aproveitem!</p>
<p><!--DEVFMTCODE--><pre class="devcodeblock" title="PHP"><div class="devcodeoverflow"><ol><li></li><li><span style="color: #009933; font-style: italic;">/**&nbsp;&nbsp;&nbsp;&nbsp; </span></li><li><span style="color: #009933; font-style: italic;">* Extrai videos do youtube através da url&nbsp;&nbsp;&nbsp;&nbsp; </span></li><li><span style="color: #009933; font-style: italic;">* @author Vinicius Salsotto &lt;vinicius.salsotto@gmail.com&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li><li><span style="color: #009933; font-style: italic;">* @param string $url&nbsp;&nbsp;&nbsp;&nbsp; </span></li><li><span style="color: #009933; font-style: italic;">* @return string&nbsp;&nbsp;&nbsp;&nbsp; </span></li><li><span style="color: #009933; font-style: italic;">*/</span>&nbsp;&nbsp;&nbsp;&nbsp; </li><li><span style="color: #000000; font-weight: bold;">function</span> youtube<span style="color: #009900;">&#40;</span><span style="color: #000088;">$url</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>&nbsp;&nbsp;&nbsp;&nbsp; </li><li>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #b1b100;">return</span> <span style="color: #990000;">preg_replace</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/.*?\?v=([\w-]+).*/'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'$1'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$url</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>&nbsp;&nbsp;&nbsp;&nbsp; </li><li><span style="color: #009900;">&#125;</span></li></ol></div></pre><!--END_DEVFMTCODE--></p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.salsotto.com/2009/10/29/extrairvideos-do-youtube/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Criando urls amigáveis com mod_rewrite</title>
		<link>http://blog.salsotto.com/2009/10/27/criando-urls-amigaveis-com-mod_rewrite/</link>
		<comments>http://blog.salsotto.com/2009/10/27/criando-urls-amigaveis-com-mod_rewrite/#comments</comments>
		<pubDate>Tue, 27 Oct 2009 13:36:21 +0000</pubDate>
		<dc:creator>Salsotto</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[Expressões Regulares]]></category>
		<category><![CDATA[Otimização de sites]]></category>

		<guid isPermaLink="false">http://blog.salsotto.com/?p=170</guid>
		<description><![CDATA[Pré-requisitos

Utilizar o servidor de aplicações web Apache
Saber o básico de Expressões Regulares

O que é .htaccess?
O .htaccess é um arquivo de texto oculto que contém uma série de diretivas para o servidor Apache, como em muitos casos o .htaccess pode ser utilizado para restringir o acesso a determinados arquivos, impedir de listar os arquivos de um [...]]]></description>
			<content:encoded><![CDATA[<h2>Pré-requisitos</h2>
<ul>
<li>Utilizar o servidor de aplicações web <a title="Servidor Apache" href="http://httpd.apache.org/" target="_blank">Apache</a></li>
<li>Saber o básico de Expressões Regulares</li>
</ul>
<h2>O que é .htaccess?</h2>
<p>O .htaccess é um arquivo de texto oculto que contém uma série de diretivas para o servidor Apache, como em muitos casos o .htaccess pode ser utilizado para restringir o acesso a determinados arquivos, impedir de listar os arquivos de um diretório, redirecionar uma página, personalizar as páginas de erro, <strong>urls amigáveis</strong> e muitas outras diretivas.</p>
<p>Porém para o funcionamento da reescrita das urls das páginas web do seu site, é necessário que em seu servidor Apache esteja configurado e instalado o módulo <strong>mod_rewrite</strong>, que é responsável por tal tarefa utilizando as fantásticas expressões regulares.</p>
<h2>Já entendi Vinícius! e agora!?</h2>
<p>Agora criaremos o nosso arquivo <strong>.htaccess</strong>,<strong> </strong>para isso basta abrir um arquivo em branco no seu programa default que usa para decodificar e salvá-lo como &#8220;.htaccess&#8221; no diretório raiz do seu site.</p>
<p>Agora com o nosso arquivo criado, iniciaremos a escrita das nossas diretivas:</p>
<p><!--DEVFMTCODE--><pre class="devcodeblock" title="Apache configuration"><div class="devcodeoverflow"><ol><li><span style="color: #adadad; font-style: italic;">#ativa a reescrita </span></li><li><span style="color: #00007f;">RewriteEngine</span> <span style="color: #0000ff;">On</span></li><li><span style="color: #adadad; font-style: italic;">#define a url base para reescrever as regras, que no nosso caso é o diretorio raiz</span></li><li><span style="color: #00007f;">RewriteBase</span> /</li><li><span style="color: #adadad; font-style: italic;">#regra de reescrita de url</span></li><li><span style="color: #00007f;">RewriteRule</span> ^noticias\/(\d{<span style="color: #ff0000;">4</span>})\/(\d{<span style="color: #ff0000;">2</span>})\/(\d{<span style="color: #ff0000;">2</span>})\/([\w_-]+)\/?$ noticia.php?ano=$<span style="color: #ff0000;">1</span>&amp;mes=$<span style="color: #ff0000;">2</span>&amp;dia=$<span style="color: #ff0000;">3</span>&amp;slug=$<span style="color: #ff0000;">4</span></li></ol></div></pre><!--END_DEVFMTCODE--></p>
<h2></h2>
<h2></h2>
<h2>Vamos entender a regra!</h2>
<p>O modelo&nbsp; apresentado acima, mostra explicitamente o seguinte:</p>
<p><!--DEVFMTCODE--><pre class="devcodeblock" title="Apache configuration"><div class="devcodeoverflow"><ol><li>^noticias\/&nbsp;&nbsp;&nbsp;&nbsp; </li><li><span style="color: #adadad; font-style: italic;">#define que a nova url deve iniciar com: &quot;noticias/&quot; </li></ol></div></pre><!--END_DEVFMTCODE--><br />
<!--DEVFMTCODE--><pre class="devcodeblock" title="Apache configuration"><div class="devcodeoverflow"><ol><li>(\d{<span style="color: #ff0000;">4</span>})\/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </li><li><span style="color: #adadad; font-style: italic;">#4 caracteres decimais seguido por uma &quot;/&quot; </li></ol></div></pre><!--END_DEVFMTCODE--><br />
<!--DEVFMTCODE--><pre class="devcodeblock" title="Apache configuration"><div class="devcodeoverflow"><ol><li>(\d{<span style="color: #ff0000;">2</span>})\/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </li><li><span style="color: #adadad; font-style: italic;">#2 caracteres decimais seguido por uma &quot;/&quot; </li></ol></div></pre><!--END_DEVFMTCODE--><br />
<!--DEVFMTCODE--><pre class="devcodeblock" title="Apache configuration"><div class="devcodeoverflow"><ol><li>(\d{<span style="color: #ff0000;">2</span>})\/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </li><li><span style="color: #adadad; font-style: italic;">#2 caracteres decimais seguido por uma &quot;/&quot; </li></ol></div></pre><!--END_DEVFMTCODE--><br />
<!--DEVFMTCODE--><pre class="devcodeblock" title="Apache configuration"><div class="devcodeoverflow"><ol><li>([\w_-]+)\/?$&nbsp;&nbsp; </li><li><span style="color: #adadad; font-style: italic;">#uma string sem tamanho definido, seguido opcionalmente por uma &quot;/&quot; no fim </li></ol></div></pre><!--END_DEVFMTCODE--><br />
<!--DEVFMTCODE--><pre class="devcodeblock" title="Apache configuration"><div class="devcodeoverflow"><ol><li>noticia.php?ano=$<span style="color: #ff0000;">1</span>&amp;mes=$<span style="color: #ff0000;">2</span>&amp;dia=$<span style="color: #ff0000;">3</span>&amp;slug=$<span style="color: #ff0000;">4</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</li><li><span style="color: #adadad; font-style: italic;">#url real que vai ser transformada em url amigável </li></ol></div></pre><!--END_DEVFMTCODE--></p>
<p>As expressões ‘$1′ , ‘$2′, ‘$3′ , ‘$4′ significam o primeiro,&nbsp; segundo, terceiro e quarto conjunto de caracteres respectivamente agrupados por parênteses na expressão da esquerda. Ou seja, é guardada uma referência para esses grupos de caracteres para que você possa usá-los.</p>
<p>Espero que tenha ajudado! ;D</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.salsotto.com/2009/10/27/criando-urls-amigaveis-com-mod_rewrite/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

