Expressões Regulares

Expressões Regulares

Palestra de 1h, direcionada a quem nunca viu/usou expressões regulares. Tenta desmistificar o assunto fazendo com que o público tente “adivinhar” o que faz algumas das expressões mostradas na apresentação. Depois demonstra onde as expressões podem ser utilizadas na vida real.

Apresentada em 2015-10-14 na Latinoware 2015 (Foz do Iguaçu-PR) http://2015.latinoware.org

Apresentada em 2015-10-24 no 3º Café com Software Livre (Indaial-SC) http://blusol.org

Apresentada em 2016-01-26 na empresa ContaAzul (Joinville-SC) https://contaazul.com

Apresentada em 2016-09-22 na XVIII Semana da Computação UDESC (Joinville-SC) http://www.semanadacomputacao.joinville.udesc.br

E583bca48acb877efd4a29229bf7927f?s=128

Aurelio Jargas

October 14, 2015
Tweet

Transcript

  1. 19.
  2. 20.
  3. 27.

    Editores de texto • Emacs • Vim • gedit •

    Kate • Sublime Text • Atom • TextMate • Notepad++ IDE, Office • Android Studio • Eclipse • Xcode • Visual Studio • LibreOffice • Google Planilhas • Microsoft Word
  4. 28.

    Linha de comando • Bash • grep • sed •

    awk • find • PowerShell # Usuários com ID de 5 dígitos e shell Bash egrep '^.*:x:[0-9]{5}:.*bash$' /etc/passwd
  5. 29.

    • Apache • Nginx Servidores HTTP # Usar URLs amigáveis

    em vez de query strings feiosas # De: http://example.com/produto/1234/info # Para: http://example.com/produto.php?id=1234&action=info RewriteEngine on RewriteRule "^/(\w+)/(\d+)/(\w+)$" /$1.php?id=$2&action=$3
  6. 30.

    • MySQL • MariaDB • PostgreSQL • SQLite • Oracle

    Bancos de dados -- Listar veículos com placas fora do padrão AAA-9999 SELECT * FROM veiculos WHERE placa NOT REGEXP '^[A-Z]{3}-\d{4}$';
  7. 31.

    • C • C# • C++ • Delphi • Go

    • Haskell • Java • JavaScript • Lua Linguagens de programação • Objective-C • Perl • PHP • Python • R • Ruby • Scala • Tcl • Visual Basic
  8. 32.

    // JavaScript, trechos de código do MiGuXeiToR :) // Remove

    acentuação t = t.replace(/[áàâãä]/gi, 'a'); t = t.replace( /[éèêë]/gi, 'e'); t = t.replace( /[íìîï]/gi, 'i'); t = t.replace(/[óòôõö]/gi, 'o'); t = t.replace( /[úùûü]/gi, 'u'); // por quê, porquê, porque, por que -> pq t = t.replace(/\bpor\s?qu[eê]/gi, 'pq'); // então -> entaum, não -> naum t = t.replace(/ão\b/gi, 'aum');
  9. 33.

    <!-- Expressões regulares no HTML5 --> <form name="cadastro1"> CEP: <input

    type="text" name="cep" pattern="\d{2}\.\d{3}-\d{3}"> <input type="submit"> </form>
  10. 35.

    Procure por: Troque por: P[A-Z]+ XX Você votou no PV,

    PSC, PSOL ou PSTU? Você votou no XX, XX, XX ou XX?
  11. 36.

    Procure por: Troque por: (.*) “$1” Oi, tudo bem? Tudo

    bem. “Oi, tudo bem?” “Tudo bem.”
  12. 37.

    Procure por: Troque por: (n[ãa]o) <b>$1</b> Tenho muito a dizer!

    Mas não lembro agora... Tenho muito a dizer! Mas <b>não</b> lembro agora...
  13. 38.

    Procure por: Troque por: (\d\d):(\d\d) $1 horas e $2 minutos

    12:34 23:59 12 horas e 34 minutos 23 horas e 59 minutos
  14. 45.

    ✓ 31 dias ✓ 12 meses ✓ Ano 1000 a

    2999 ✓ Fevereiro até 29 ((0[1-9]|[12][0-9])/02|(0[1-9]|[12][0- 9]|30)/(0[469]|11)|(0[1-9]|[12][0-9]|3 [01])/(0[13578]|1[02]))/[12][0-9]{3} ✗ Ano bissexto ✗ Feriados ✗ Dias úteis
  15. 51.

    $