SlideShare una empresa de Scribd logo
1 de 104
Descargar para leer sin conexión
Perl 6 Regex
Perl 6 Data Structures
Schlaraffenland
Heiliger Gral
Schönheit Und Struktur
Voll Gepackt
Voll Gepackt
Vorsicht Denglisch !
Voll Gepackt
Keine Sorge



:Perl5
Modifikator am Anfang




  m :P5 //
Alles wie bei Mama
Papa says




We put the ”regular”
back into expression.
Was bleibt ?
Was bleibt ?
  Capturing: (…) Escape: 
      Modifikatoren: i, g
    Quantifier: *, +, und ?
        Alternativen: |
        match Var.: $/
min. matching Suffix: ??, *?, +?
Vorsicht Falle
Vorsicht Falle


   . /smex

   [-]    //
Any Char



   .
Any Char

N ist der alte .
Any Char

N ist der alte .

Gegenteil von n
Any Char

N ist der neue .

Gegenteil von n

   seit 5.12
Any Char

   N ist der alte .

Punkt meint ”any char”
Any Char
Any Char
Any Char
Kein ”multi line mode”

   kein /.../s und /.../m
Kein ”multi line mode”

   kein /.../s und /.../m

        ^       ^^
Kein ”multi line mode”

   kein /.../s und /.../m

        ^       ^^

        $       $$
Leerzeichen

immer noch s
Leerzeichen

immer noch s

  h | v
Leerzeichen

    immer noch s

        h | v

horizontal | vertikal
Leerzeichen

    immer noch s

       h | v

horizontal = leer + tabs
Oder oder oder?

    |     ||
Oder oder oder?

     |       ||

  'sub' | 'substr'
Oder oder oder?

     |       ||

  'sub' | 'substr'

 'substr' gewinnt
Oder oder oder?

     |      ||

 'sub' || 'substr'
Oder oder oder?

     |      ||

 'sub' || 'substr'

  'sub' gewinnt
Regex Metachar

 ^ ^^ $ $$ | || &

   . ** % %%

 := # (+Klammern)
Regex Metachar

 ^ ^^ $ $$ | || &

   . ** % %%

 := # (+Klammern)
Regex Metachar

 ^ ^^ $ $$ | || &

   . ** % %%

 := # (+Klammern)
Regex Metachar

 ^ ^^ $ $$ | || &

   . ** % %%

 := # (+Klammern)
Quantifikatoren

?   +   *    ** **?

        **

    %       %%
Quantifikator **


'243' ~~ /d ** 2/
Quantifikator **


'243' ~~ /d ** 2/

  default to *
Quantifikator **


 '243' ~~ /d ** 2/

'243' ~~ /d ** 2..4/
Quantifikator %


'3,4,5' ~~ /d+ % ','/
Quantifikator %%


'3,4,5' ~~ /d+ % ','/

'3,4,5,' ~~ /d+ %% ','/
Kein ”eval mode”

   P5: s/.../.../e
Kein ”eval mode”

   P5: s/.../.../e

   P6: s/.../{...}/
Kein ”eval mode”

   P5: s/.../.../e

   P6: s/.../{...}/

   s[...] = {…};
Kein ”eval mode”

   P5: s/.../.../ee

 P6: s/.../{ eval ...}/

  s[...] = eval {…};
Perl 6 Regex

  kein /.../x
Perl 6 Regex

  kein /.../x

 ist Standard
Eigene Zeichenklasse

      P5: [a-m]
Eigene Zeichenklasse

      P5: [a-m]

     P6: <[a m]>]
Bereiche Wie Überall

      P5: [a-m]

     P6: <[a..m]>]
Klammern in Regex



Zeichenklasse <[..]>]

     Block {..}
Klammern in Regex

Teilregex (..), [..], <...>

 Zeichenklasse <[..]>]

        Block {..}
Klammern in Regex

 (?:pattern) => [pattern]
(?<key>pattern)
       => $<key> = <pattern>

   (?{code}) => {code}
Horror Vacui
Horror Vacui

    kein //
Horror Vacui

    kein //

  / <prior> /
Horror Vacui

     kein //

   / <prior> /

/ '' / aka / <?> /
Teilfunde

 $1
Teilfunde

 $1 => $0
Teilfunde

      $1 => $0

$0 => $*EXECUTABLE_NAME
Teilfunde

 $1 => $0

kein 1 .. 9
Teilfunde

       $1 => $0

         kein:

L...E, U...E, Q...E
Perl 6 Regex

  $1 => $0



  { lc …}, ...
Teilfunde

 $1 => $0

      $0 ..
Teilfunde

 $1 => $0

      $0 ..
Teilfunde

 $1 => $0

      $0 .. $15
Teilfunde

 $1 => $0

@() == $0 ..
Teilfunde

 $1 => $0

@() == $0 ..

 @()[1][2]
Teilfunde

 $1 => $0

 ( () (…) )

 @()[0][1]
Regex Variablen

   $0 …, @()

    $/,
Regex Variablen

   $0 …, @()

    $/, $/<..>
Regex Variablen

   $0 …, @()

    $/, $/<..>

      $<..>
Regex Variablen

   $0 …, @()

    $/, $/<..>

  $<key> = (...)
Operatoren
Operatoren

        rx//
Operatoren

             rx//


Warum nicht qr // ?
Operatoren

              rx//


Subsprache, ! Quoting
Operatoren

            rx//


$~MAIN $~Q $~Regex
Operatoren

~~      rx//
Operatoren

   ~~            rx//

m// ms// s/// ss/// tr///
Operatoren

   ~~            rx//

m// ms// s/// ss/// tr///

match comb subst trans
Operatoren



ms//   ss///
Operatoren



  ms//    ss///

m :s //   s :ss ///
Operatoren



:sigspace :samespace

  m :s //   s :ss ///
Operatoren

Leerzeichen trennen Wörter

:sigspace :samespace

  m :s //     s :ss ///
Modifikatoren

:g
Modifikatoren

:g   :i   :a   :m
Modifikatoren

:g   :i    :a   :m

     :ii   :aa :mm
Modifikatoren

   :g   :i      :a   :m

:x(n) :nth(n)
Modifikatoren

   :g    :i   :a   :m

:x(n) :nth(n) :c(n) :p(n)
Modifikatoren

   :g    :i   :a   :m

:x(n) :nth(n) :c(n) :p(n)

    :r :ov :ex :rw
grammar Methoden

     regex {..}

     token {..}

      rule {..}
grammar Methoden

          regex {..}

   token {..} regex :ratchet {}

rule {..} regex :ratchet :sigspace {}
grammar Methoden
grammar webpage {
  rule TOP {<head> <body>}
  rule head {<meta>|<title>}
 …

 token title {
   <?after <title> .*
   <?before </title>
 }
grammar Methoden
grammar webpage {
  rule TOP {<head> <body>}
  rule head {<meta>|<title>}
 …

 token title {
   <?after <title> .*
   <?before </title>
 }   $/<head><title>
grammar sind Klassen


 $~MAIN $~Q $~Regex
What I Do

perlfoundation.org/
 perl6/index.cgi?
  perl_6_tablets
Thank You

Más contenido relacionado

Destacado

WOBI - Jenn Lim - Delivering Happiness
WOBI - Jenn Lim - Delivering HappinessWOBI - Jenn Lim - Delivering Happiness
WOBI - Jenn Lim - Delivering HappinessDelivering Happiness
 
Análisis de un boli bic
Análisis de un boli bicAnálisis de un boli bic
Análisis de un boli bicvictordelatleti
 
Aprendamosconelmundial
AprendamosconelmundialAprendamosconelmundial
AprendamosconelmundialErick Fritis
 
Mapa conceptual diario (alerta de tsunami en chile)(l)
Mapa conceptual  diario (alerta de tsunami en chile)(l)Mapa conceptual  diario (alerta de tsunami en chile)(l)
Mapa conceptual diario (alerta de tsunami en chile)(l)Pablo Baigorria Sutera
 
Oportunidades negocio australia 11052016
Oportunidades negocio australia 11052016Oportunidades negocio australia 11052016
Oportunidades negocio australia 11052016Lara Garcia
 
UI design for open data V02 nov 2014
UI design for open data V02 nov 2014UI design for open data V02 nov 2014
UI design for open data V02 nov 2014Hollie Lubbock
 
Organizadores gráficos. Rutinas de pensamiento
Organizadores gráficos. Rutinas de pensamientoOrganizadores gráficos. Rutinas de pensamiento
Organizadores gráficos. Rutinas de pensamientomvcasado
 
El reconocimiento de la diversidad afectiva sexual y familiar. por j uan carl...
El reconocimiento de la diversidad afectiva sexual y familiar. por j uan carl...El reconocimiento de la diversidad afectiva sexual y familiar. por j uan carl...
El reconocimiento de la diversidad afectiva sexual y familiar. por j uan carl...miescuelaimaginaria
 

Destacado (18)

Issue23
Issue23Issue23
Issue23
 
2013 07-24 guía comercio seguro
2013 07-24 guía comercio seguro2013 07-24 guía comercio seguro
2013 07-24 guía comercio seguro
 
El método VICFARR para desarrollar el talento
El método VICFARR para desarrollar el talentoEl método VICFARR para desarrollar el talento
El método VICFARR para desarrollar el talento
 
sessie 45 - ppt goede fotos maken
sessie 45 - ppt goede fotos makensessie 45 - ppt goede fotos maken
sessie 45 - ppt goede fotos maken
 
WOBI - Jenn Lim - Delivering Happiness
WOBI - Jenn Lim - Delivering HappinessWOBI - Jenn Lim - Delivering Happiness
WOBI - Jenn Lim - Delivering Happiness
 
Análisis de un boli bic
Análisis de un boli bicAnálisis de un boli bic
Análisis de un boli bic
 
Aprendamosconelmundial
AprendamosconelmundialAprendamosconelmundial
Aprendamosconelmundial
 
Mapa conceptual diario (alerta de tsunami en chile)(l)
Mapa conceptual  diario (alerta de tsunami en chile)(l)Mapa conceptual  diario (alerta de tsunami en chile)(l)
Mapa conceptual diario (alerta de tsunami en chile)(l)
 
Oportunidades negocio australia 11052016
Oportunidades negocio australia 11052016Oportunidades negocio australia 11052016
Oportunidades negocio australia 11052016
 
UI design for open data V02 nov 2014
UI design for open data V02 nov 2014UI design for open data V02 nov 2014
UI design for open data V02 nov 2014
 
Plan de Marketing Estratégico
Plan de Marketing EstratégicoPlan de Marketing Estratégico
Plan de Marketing Estratégico
 
ActivBoard: Troubleshooting Tips
ActivBoard: Troubleshooting TipsActivBoard: Troubleshooting Tips
ActivBoard: Troubleshooting Tips
 
The jorc code
The jorc codeThe jorc code
The jorc code
 
Organizadores gráficos. Rutinas de pensamiento
Organizadores gráficos. Rutinas de pensamientoOrganizadores gráficos. Rutinas de pensamiento
Organizadores gráficos. Rutinas de pensamiento
 
Propuesta diplomado pmp (1)
Propuesta diplomado pmp (1)Propuesta diplomado pmp (1)
Propuesta diplomado pmp (1)
 
La Leche De Vaca
La Leche De VacaLa Leche De Vaca
La Leche De Vaca
 
El reconocimiento de la diversidad afectiva sexual y familiar. por j uan carl...
El reconocimiento de la diversidad afectiva sexual y familiar. por j uan carl...El reconocimiento de la diversidad afectiva sexual y familiar. por j uan carl...
El reconocimiento de la diversidad afectiva sexual y familiar. por j uan carl...
 
Autonomacion (2)
Autonomacion (2)Autonomacion (2)
Autonomacion (2)
 

Similar a Perl 6 Regex und Grammars

Perl 5 Quiz Chemnitz Edition
Perl 5 Quiz Chemnitz EditionPerl 5 Quiz Chemnitz Edition
Perl 5 Quiz Chemnitz Editionlichtkind
 
Von Automaten zu Programmen–Parsergeneratoren und Attributgrammatiken
Von Automaten zu Programmen–Parsergeneratoren und AttributgrammatikenVon Automaten zu Programmen–Parsergeneratoren und Attributgrammatiken
Von Automaten zu Programmen–Parsergeneratoren und AttributgrammatikenTim Furche
 
Reguläre Ausdrucke (PCRE)
Reguläre Ausdrucke (PCRE)Reguläre Ausdrucke (PCRE)
Reguläre Ausdrucke (PCRE)Dominik Siebel
 
Perl - die Taschenkettensäge unter den Programmiersprachen - Vortrag 2003
Perl - die Taschenkettensäge unter den Programmiersprachen - Vortrag 2003Perl - die Taschenkettensäge unter den Programmiersprachen - Vortrag 2003
Perl - die Taschenkettensäge unter den Programmiersprachen - Vortrag 2003Brigitte Jellinek
 
Abap 7.02 new features - neue stringfunktionen
Abap 7.02   new features - neue stringfunktionenAbap 7.02   new features - neue stringfunktionen
Abap 7.02 new features - neue stringfunktionenCadaxo GmbH
 
Regular Expressions - eine Einführung
Regular Expressions - eine EinführungRegular Expressions - eine Einführung
Regular Expressions - eine EinführungBrigitte Jellinek
 
Wundertüte Perl
Wundertüte PerlWundertüte Perl
Wundertüte Perllichtkind
 
Battle of the Languages: Java und Python im Wettstreit beim Lösen von Program...
Battle of the Languages: Java und Python im Wettstreit beim Lösen von Program...Battle of the Languages: Java und Python im Wettstreit beim Lösen von Program...
Battle of the Languages: Java und Python im Wettstreit beim Lösen von Program...gedoplan
 
02.EinfacheProgramme und grundsymbole von
02.EinfacheProgramme und grundsymbole von02.EinfacheProgramme und grundsymbole von
02.EinfacheProgramme und grundsymbole vonFlorianHorner
 
Dev Day 2019: Mirko Zeibig – "Hallo " <> "Elixir"
Dev Day 2019: Mirko Zeibig – "Hallo " <> "Elixir"Dev Day 2019: Mirko Zeibig – "Hallo " <> "Elixir"
Dev Day 2019: Mirko Zeibig – "Hallo " <> "Elixir"DevDay Dresden
 
Lehmanns Rails Erweitern
Lehmanns Rails ErweiternLehmanns Rails Erweitern
Lehmanns Rails Erweiternjan_mindmatters
 
nagiosplugin - eine Python-Biblioth­ek für Monitoring-Plug­ins
nagiosplugin - eine Python-Biblioth­ek für Monitoring-Plug­ins nagiosplugin - eine Python-Biblioth­ek für Monitoring-Plug­ins
nagiosplugin - eine Python-Biblioth­ek für Monitoring-Plug­ins Christian Kauhaus
 
Tech Talk: Groovy
Tech Talk: GroovyTech Talk: Groovy
Tech Talk: Groovymwie
 
Tech Talk: Pyparsing
Tech Talk: PyparsingTech Talk: Pyparsing
Tech Talk: Pyparsingschlauch
 

Similar a Perl 6 Regex und Grammars (20)

Perl 5 Quiz Chemnitz Edition
Perl 5 Quiz Chemnitz EditionPerl 5 Quiz Chemnitz Edition
Perl 5 Quiz Chemnitz Edition
 
Ruby on Rails SS09 03
Ruby on Rails SS09 03Ruby on Rails SS09 03
Ruby on Rails SS09 03
 
Von Automaten zu Programmen–Parsergeneratoren und Attributgrammatiken
Von Automaten zu Programmen–Parsergeneratoren und AttributgrammatikenVon Automaten zu Programmen–Parsergeneratoren und Attributgrammatiken
Von Automaten zu Programmen–Parsergeneratoren und Attributgrammatiken
 
Reguläre Ausdrucke (PCRE)
Reguläre Ausdrucke (PCRE)Reguläre Ausdrucke (PCRE)
Reguläre Ausdrucke (PCRE)
 
Pyparsing
PyparsingPyparsing
Pyparsing
 
Perl - die Taschenkettensäge unter den Programmiersprachen - Vortrag 2003
Perl - die Taschenkettensäge unter den Programmiersprachen - Vortrag 2003Perl - die Taschenkettensäge unter den Programmiersprachen - Vortrag 2003
Perl - die Taschenkettensäge unter den Programmiersprachen - Vortrag 2003
 
Ruby on Rails SS09 04
Ruby on Rails SS09 04Ruby on Rails SS09 04
Ruby on Rails SS09 04
 
Software-Tests automatisch erzeugen: Frische Ansätze für Forschung, Praxis un...
Software-Tests automatisch erzeugen: Frische Ansätze für Forschung, Praxis un...Software-Tests automatisch erzeugen: Frische Ansätze für Forschung, Praxis un...
Software-Tests automatisch erzeugen: Frische Ansätze für Forschung, Praxis un...
 
Abap 7.02 new features - neue stringfunktionen
Abap 7.02   new features - neue stringfunktionenAbap 7.02   new features - neue stringfunktionen
Abap 7.02 new features - neue stringfunktionen
 
Regular Expressions - eine Einführung
Regular Expressions - eine EinführungRegular Expressions - eine Einführung
Regular Expressions - eine Einführung
 
Php Schulung
Php SchulungPhp Schulung
Php Schulung
 
Wundertüte Perl
Wundertüte PerlWundertüte Perl
Wundertüte Perl
 
Battle of the Languages: Java und Python im Wettstreit beim Lösen von Program...
Battle of the Languages: Java und Python im Wettstreit beim Lösen von Program...Battle of the Languages: Java und Python im Wettstreit beim Lösen von Program...
Battle of the Languages: Java und Python im Wettstreit beim Lösen von Program...
 
02.EinfacheProgramme und grundsymbole von
02.EinfacheProgramme und grundsymbole von02.EinfacheProgramme und grundsymbole von
02.EinfacheProgramme und grundsymbole von
 
Dev Day 2019: Mirko Zeibig – "Hallo " <> "Elixir"
Dev Day 2019: Mirko Zeibig – "Hallo " <> "Elixir"Dev Day 2019: Mirko Zeibig – "Hallo " <> "Elixir"
Dev Day 2019: Mirko Zeibig – "Hallo " <> "Elixir"
 
Web Entwicklung mit PHP - Teil 1
Web Entwicklung mit PHP - Teil 1Web Entwicklung mit PHP - Teil 1
Web Entwicklung mit PHP - Teil 1
 
Lehmanns Rails Erweitern
Lehmanns Rails ErweiternLehmanns Rails Erweitern
Lehmanns Rails Erweitern
 
nagiosplugin - eine Python-Biblioth­ek für Monitoring-Plug­ins
nagiosplugin - eine Python-Biblioth­ek für Monitoring-Plug­ins nagiosplugin - eine Python-Biblioth­ek für Monitoring-Plug­ins
nagiosplugin - eine Python-Biblioth­ek für Monitoring-Plug­ins
 
Tech Talk: Groovy
Tech Talk: GroovyTech Talk: Groovy
Tech Talk: Groovy
 
Tech Talk: Pyparsing
Tech Talk: PyparsingTech Talk: Pyparsing
Tech Talk: Pyparsing
 

Más de lichtkind

Perl 6 in Context
Perl 6 in ContextPerl 6 in Context
Perl 6 in Contextlichtkind
 
Wx::Perl::Smart
Wx::Perl::SmartWx::Perl::Smart
Wx::Perl::Smartlichtkind
 
Complete Programming
Complete ProgrammingComplete Programming
Complete Programminglichtkind
 
P6 OO vs Moose (&Moo)
P6 OO vs Moose (&Moo)P6 OO vs Moose (&Moo)
P6 OO vs Moose (&Moo)lichtkind
 
Writing Perl 6 Rx
Writing Perl 6 RxWriting Perl 6 Rx
Writing Perl 6 Rxlichtkind
 
Perl 6 Datastructures
Perl 6 DatastructuresPerl 6 Datastructures
Perl 6 Datastructureslichtkind
 
Perl 6 Datenstrukturen
Perl 6 DatenstrukturenPerl 6 Datenstrukturen
Perl 6 Datenstrukturenlichtkind
 
Document Driven Development
Document Driven DevelopmentDocument Driven Development
Document Driven Developmentlichtkind
 
Modern wx perl
Modern wx perlModern wx perl
Modern wx perllichtkind
 
Bettereditors
BettereditorsBettereditors
Bettereditorslichtkind
 
Was können wir von Rebol lernen?
Was können wir von Rebol lernen?Was können wir von Rebol lernen?
Was können wir von Rebol lernen?lichtkind
 
Perl Testing
Perl TestingPerl Testing
Perl Testinglichtkind
 
Perl in der Wiki
Perl in der WikiPerl in der Wiki
Perl in der Wikilichtkind
 
What is Kephra about?
What is Kephra about?What is Kephra about?
What is Kephra about?lichtkind
 
What we can learn from Rebol?
What we can learn from Rebol?What we can learn from Rebol?
What we can learn from Rebol?lichtkind
 

Más de lichtkind (18)

Perl 6 in Context
Perl 6 in ContextPerl 6 in Context
Perl 6 in Context
 
Wx::Perl::Smart
Wx::Perl::SmartWx::Perl::Smart
Wx::Perl::Smart
 
Complete Programming
Complete ProgrammingComplete Programming
Complete Programming
 
P6 OO vs Moose (&Moo)
P6 OO vs Moose (&Moo)P6 OO vs Moose (&Moo)
P6 OO vs Moose (&Moo)
 
P6oo
P6ooP6oo
P6oo
 
Writing Perl 6 Rx
Writing Perl 6 RxWriting Perl 6 Rx
Writing Perl 6 Rx
 
Perl 6 Datastructures
Perl 6 DatastructuresPerl 6 Datastructures
Perl 6 Datastructures
 
Perl 6 Datenstrukturen
Perl 6 DatenstrukturenPerl 6 Datenstrukturen
Perl 6 Datenstrukturen
 
Document Driven Development
Document Driven DevelopmentDocument Driven Development
Document Driven Development
 
Modern wx perl
Modern wx perlModern wx perl
Modern wx perl
 
Bettereditors
BettereditorsBettereditors
Bettereditors
 
Hgit
HgitHgit
Hgit
 
Was können wir von Rebol lernen?
Was können wir von Rebol lernen?Was können wir von Rebol lernen?
Was können wir von Rebol lernen?
 
Neuperl6
Neuperl6Neuperl6
Neuperl6
 
Perl Testing
Perl TestingPerl Testing
Perl Testing
 
Perl in der Wiki
Perl in der WikiPerl in der Wiki
Perl in der Wiki
 
What is Kephra about?
What is Kephra about?What is Kephra about?
What is Kephra about?
 
What we can learn from Rebol?
What we can learn from Rebol?What we can learn from Rebol?
What we can learn from Rebol?
 

Perl 6 Regex und Grammars