<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
Heheheh!....obrigado Solli<br>
<br>
N&atilde;o tenho medo n&atilde;o das regex....mas &eacute; que tudo que &eacute; novo e diferente
(e p&otilde;e diferente nisso!) as vezes d&aacute; um pouco de receio, ou melhor, a
gente n&atilde;o consegue enxergar direito a coisa. Mas &eacute; aquela
hist&oacute;ria....s&oacute; se aprende a andar de bicicleta andando nela!<br>
<br>
Abra&ccedil;o e obrigado pelo apoio,<br>
<br>
Fl&aacute;vio<br>
<br>
Solli Honorio escreveu:
<blockquote
 cite="mid:j2t12d1f4ee1004260236sdd2e6362k3a17094f8bf0d57c@mail.gmail.com"
 type="cite"><span style="font-family: courier new,monospace;">Fl&aacute;vio
bem vindo ao clube dos que tomaram, tomam e v&atilde;o tomar cacete de regex.</span><br
 style="font-family: courier new,monospace;">
  <br style="font-family: courier new,monospace;">
  <span style="font-family: courier new,monospace;">Neste momento voc&ecirc;
est&aacute; passando pela fase 1 na escala de desenvolvedores Perl, que &eacute;
quando voc&ecirc; come&ccedil;a aprender regex e acha que tudo poder&aacute; ser feito em
regex, inclusive querendo substituir 'eq' por '=~ //i'. Mas felizmente
voc&ecirc; est&aacute; percebendo r&aacute;pido que regex &eacute; um padr&atilde;o muito r&iacute;gido, e
relativamente f&aacute;cil de ser 'quebrado'.<br>
  <br>
Dois exemplos simples de como quebrar regex &eacute; tentar utiliz&aacute;-la para
verificar email e ou fazer parse de html. Como o Eden j&aacute; disse uma vez:
"a regex (express&atilde;o regular) n&atilde;o pode ser utilizada para processar algo
que n&atilde;o &eacute; regular", compreender esta frase &eacute; muito importante,
compreender o que &eacute; 'regular' &eacute; imprescind&iacute;vel.<br>
  <br>
O Gabriel e o Mantovani j&aacute; lhe deram boas orienta&ccedil;&otilde;es, e aqui s&oacute; quero
complementar. Continue lendo o material que voc&ecirc; est&aacute; lendo, considere
obter o 'Mastering Regular Expression' e d&ecirc; uma olhada no site <a
 moz-do-not-send="true" href="http://www.regular-expressions.info/">http://www.regular-expressions.info/</a>.<br>
  <br>
Abra&ccedil;os e bem vindo ao clube !<br>
  <br>
Solli M. Hon&oacute;rio<br>
&nbsp;</span><br style="font-family: courier new,monospace;">
  <br>
  <div class="gmail_quote">2010/4/25 "Fl&aacute;vio R. Lopes" <span dir="ltr">&lt;<a
 moz-do-not-send="true" href="mailto:flavio.lopes@links.inf.br">flavio.lopes@links.inf.br</a>&gt;</span><br>
  <blockquote class="gmail_quote"
 style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
    <div bgcolor="#ffffff" text="#000000">
Oi Gabriel!<br>
    <br>
Nossa cara!...t&ocirc; tomando um cacete de regex!<br>
    <br>
Putz....num fica bravo, mas n&atilde;o entendi direito sua explica&ccedil;&atilde;o.<br>
    <br>
Na parte em que vc se diz que eu "quebrei a sequencia" ao inserir
'Silva' n&atilde;o estaria mantendo o mesmo padr&atilde;o, ou seja, o proximo \w+ (do
passo 3) ainda n&atilde;o estaria no mesmo padr&atilde;o? pois ainda assim ter&iacute;amos o
"and" seguinte de um espa&ccedil;o at&eacute; a palavra "Flintstone"<br>
    <br>
Deixa ver se te explico melhor como vejo a coisa:<br>
No passo-3 a gente tem:&nbsp; and [seguido de um espa&ccedil;o] \w+ [outro espa&ccedil;o]
\g{last_name}<br>
Neste \w+ n&atilde;o estaria compreendido TODOS os caracteres que v&atilde;o do
espa&ccedil;o ap&oacute;s o "and" at&eacute; o espa&ccedil;o last_name, ou seja, <br>
\w+ = [espa&ccedil;o]Wilma[espa&ccedil;o]Silva[espa&ccedil;o]\g{last_name}; onde
\g{last_name} = Flintstone<br>
    <br>
Eu acho ent&atilde;o que t&ocirc; confundindo o "\w+"<br>
    <br>
Vc pode me explicar novamente ?<br>
    <br>
    <br>
Gabriel Vieira escreveu:
    <div>
    <div class="h5">
    <blockquote type="cite">
      <pre>2010/4/25 "Fl&aacute;vio R. Lopes" <a moz-do-not-send="true"
 href="mailto:flavio.lopes@links.inf.br" target="_blank">&lt;flavio.lopes@links.inf.br&gt;</a>:
  </pre>
      <blockquote type="cite">
        <pre>use 5.010;
my $names = 'Fred Flinstone and Wilma Flinstone';
if( $names =~ m/(?&lt;last_name&gt;\w+) and \w+ \g{last_name}/ ) {
&nbsp; say "I saw $+{last_name}";
&nbsp; }
    </pre>
      </blockquote>
      <pre>No caso, se vc perceber na regex que voc&ecirc; postou &eacute; identificado:

1) (?&lt;last_name&gt;\w+) -&gt; um conjunto de um ou mais caracteres
alfanum&eacute;ricos (ou _) e atribuido o seu valor &agrave; vari&aacute;vel $last_name
2) and -&gt; seguido de 1 espa&ccedil;o, a palavra 'and' e mais 1 espa&ccedil;o
3) \w+ -&gt; seguido de mais um conjunto de caracteres alfanum&eacute;ricos (ou
_), seguido de espa&ccedil;o
4) \g{last_name} -&gt; seguido posteriormente pelo mesmo conte&uacute;do
atribuido &agrave; vari&aacute;vel anteriormente.

O que ocorre, &eacute; que quando voc&ecirc; adiciona Silva, voc&ecirc; quebra essa
sequ&ecirc;ncia, j&aacute; que ap&oacute;s o conjunto de caracteres encontrado no passo 3,
voc&ecirc; ter&aacute; outro conjunto de caracteres (Silva), ao inv&eacute;s de Flinstone,
novamente, como encontrado no passo 1.

Para satisfazer, diremos que podem ser encontrados 0 ou mais conjuntos
de caracteres, antes do padr&atilde;o encontrado no passo 1 se repita.

--------------8&lt;--------------
use 5.010;
my $names = 'Fred Flinstone and Wilma Silva Flinstone';
if( $names =~ m/(?&lt;last_name&gt;\w+) and (\w+\s+)*\g{last_name}/ ) {
  say "I saw $+{last_name}";
}
--------------&gt;8--------------

Que eu j&aacute; indicaria, algo que possa satisfazer 2 sobrenomes iguais.

--------------8&lt;--------------
use 5.010;
my $names = 'Fred Silva Flinstone and Wilma Silva Flinstone';
if( $names =~ m/(?&lt;last_name&gt;(\w+\s*)+) and (\w+\s+)*\g{last_name}/ ) {
  say "I saw $+{last_name}";
}
--------------&gt;8--------------


[]s,

  </pre>
    </blockquote>
    <br>
    </div>
    </div>
    </div>
    <br>
_______________________________________________<br>
SaoPaulo-pm mailing list<br>
    <a moz-do-not-send="true" href="mailto:SaoPaulo-pm@pm.org">SaoPaulo-pm@pm.org</a><br>
    <a moz-do-not-send="true"
 href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a><br>
  </blockquote>
  </div>
  <br>
  <br clear="all">
  <br>
-- <br>
"o animal satisfeito dorme". - Guimar&atilde;es Rosa<br>
  <pre wrap="">
<hr size="4" width="90%">
_______________________________________________
SaoPaulo-pm mailing list
<a class="moz-txt-link-abbreviated" href="mailto:SaoPaulo-pm@pm.org">SaoPaulo-pm@pm.org</a>
<a class="moz-txt-link-freetext" href="http://mail.pm.org/mailman/listinfo/saopaulo-pm">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a></pre>
</blockquote>
<br>
</body>
</html>