Estava pensando nisso outro dia. Eu não sei mesmo programar sem ERs, talvez por ter iniciado com o Perl (a primeira linguagem a popularizar as ERs), mas certamente pela praticidade que elas representam na hora de manipular strings.
Na época em que o Perl começou a ficar famoso era comum ouvir comentários por parte de programadores de outras linguagens sobre aquelas "linhas enigmáticas e indecifráveis do Perl", querendo se referir às tais ERs. Hoje as Expressões Regulares estão em todos os lugares. Se você está lendo este artigo, deve ser um desenvolvedor web, portanto usa ou já usou o famoso Dreamweaver. Pois bem, na janela de busca e substituição existe a opção "use regular expression" (minha versão é em inglês…), já reparou? e é uma mão-na-roda, pode crer. Nas linguagens então… praticamente todas tem suporte para ERs. Repare no exemplo abaixo:
// exemplo.php
$found = ‘não encontrado…’;
$keyword = preg_quote($_REQUEST[’keyword’]);
$first_letter = preg_quote($_REQUEST[’first_letter’]);
$conn = mysql_connect(’localhost’, ‘user’,'passw’);
mysql_select_db(’registros’);
$sql = "SELECT * FROM allregs WHERE val REGEXP ";
$sql .= "’^$first_letter’"; // ER!
$res = mysql_query($sql, $conn);
while($arr = mysql_fetch_row($res)) {
// ER!
if(preg_match("/\b".$keyword."\b/i", $arr[’val’])) {
$found = ‘encontrado!’;
}
}
?>
<html>
<head>
<script>
var found = "<?=$found?>";
var first_letter = "<?=$_REQUEST[’first_letter’]?>";
var keyword = "<?=$_REQUEST[’keyword’]?>";
if(/^não/.test(found)) alert(’no no no…’); // ER!
else alert(’Ok, achamos um valor iniciado por ‘+
first_letter+’ e contendo ‘+keyword);
</script>
</head>
<body />
</html>
Nosso exemplo não teria muita utilidade na prática, mas reparou que existem ERs nos três níveis (MySQL, PHP e Javascript)? pois é, é assim que eu penso ao programar. Às vezes até para transformar algum atributo de uma TAG ou mesmo criar e inserir novas TAGs no documento, eu prefiro o innerHTML, para manipular o texto com ERs, que o DOM (o que seria mais ‘natural’).
Já ouvi que sou maluco e que o método tradicional (strpos, substr, etc. (PHP) ou indexOf, etc. (JS)) é muito mais fácil. Desculpem mas eu discordo redondamente. Com ERs eu escrevo menos e e consigo resultados mais eficientes.
No meu tutorial há um capítulo onde falo do básico sobre ERs no PHP, dando destaque às funções compatíveis com o Perl [leia], mas o Aurélio, guru das expressões regulares, já tinha feito muito melhor. É dele o primeiro livro brasileiro sobre expressões regulares , disponível online também (o livro é muito legal, de fácil entendimento). Consulte o Aurélio para saber mais sobre como usar ERs.
As expressões regulares foram concebidas por dois neurologistas em 1943 num estudo sobre o funcionamento dos neurônios humanos que, anos mais tarde, foi retomado por um matemático que criou as notações, os símbolos para representar esses padrões - que só caíram nas graças da informática mais de 20 anos após sua concepção. O fato se deu em ambiente Linux, o que explica a relação com o Perl, nativo desse mesmo habitat. Tudo isso está dito no guia de consulta do Aurélio, já citado, mas repito aqui por achar, no mínimo, curiosa essa história.
Aprender ERs nunca será perda de tempo, pois há suporte amplo para elas na maior parte das linguagens e elas estão baseadas em conceitos sólidos - não vão mudar com a próxima versão de se-lá-o-que-for. Além disso, elas tornam seu programa mais inteligente, capaz de ler e modificar um texto de um modo mais semelhante ao modo humano.
É isso aí, foi apenas o desabafo de um programador que não se conforma com essa demora… por quê elas não são mais populares ?!?
Para terminar, vou repetir: não sei programar sem ERs.










Caraca! Vc deve mesmo ser maluco, mas se puder enviar pro meu e-mail algum material sobre isso…
Gosto de programar com versatilidade…
Obrigado.
Por Jack Tequila em 2007-04-02 12:23:27, segunda