104
Perl 6 Regex

Perl 6 Regex und Grammars

Embed Size (px)

DESCRIPTION

this talk should you prepare you for the new syntax, so you can write Perl 6 today

Citation preview

Page 1: Perl 6 Regex und Grammars

Perl 6 Regex

Page 2: Perl 6 Regex und Grammars

Perl 6 Data Structures

Page 3: Perl 6 Regex und Grammars

Schlaraffenland

Page 4: Perl 6 Regex und Grammars

Heiliger Gral

Page 5: Perl 6 Regex und Grammars

Schönheit Und Struktur

Page 6: Perl 6 Regex und Grammars

Voll Gepackt

Page 7: Perl 6 Regex und Grammars

Voll Gepackt

Page 8: Perl 6 Regex und Grammars

Vorsicht Denglisch !

Page 9: Perl 6 Regex und Grammars

Voll Gepackt

Page 10: Perl 6 Regex und Grammars

Keine Sorge

:Perl5

Page 11: Perl 6 Regex und Grammars

Modifikator am Anfang

m :P5 //

Page 12: Perl 6 Regex und Grammars

Alles wie bei Mama

Page 13: Perl 6 Regex und Grammars

Papa says

We put the ”regular” back into expression.

Page 14: Perl 6 Regex und Grammars

Was bleibt ?

Page 15: Perl 6 Regex und Grammars

Was bleibt ?

Capturing: (…) Escape: \Modifikatoren: i, g

Quantifier: *, +, und ?Alternativen: |match Var.: $/

min. matching Suffix: ??, *?, +?

Page 16: Perl 6 Regex und Grammars

Vorsicht Falle

Page 17: Perl 6 Regex und Grammars

Vorsicht Falle

. /smex

[-] //

Page 18: Perl 6 Regex und Grammars

Any Char

.

Page 19: Perl 6 Regex und Grammars

Any Char

\N ist der alte .

Page 20: Perl 6 Regex und Grammars

Any Char

\N ist der alte .

Gegenteil von \n

Page 21: Perl 6 Regex und Grammars

Any Char

\N ist der neue .

Gegenteil von \n

seit 5.12

Page 22: Perl 6 Regex und Grammars

Any Char

\N ist der alte .

Punkt meint ”any char”

Page 23: Perl 6 Regex und Grammars

Any Char

Page 24: Perl 6 Regex und Grammars

Any Char

Page 25: Perl 6 Regex und Grammars

Any Char

Page 26: Perl 6 Regex und Grammars

Kein ”multi line mode”

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

Page 27: Perl 6 Regex und Grammars

Kein ”multi line mode”

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

^ ^^

Page 28: Perl 6 Regex und Grammars

Kein ”multi line mode”

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

^ ^^

$ $$

Page 29: Perl 6 Regex und Grammars

Leerzeichen

immer noch \s

Page 30: Perl 6 Regex und Grammars

Leerzeichen

immer noch \s

\h | \v

Page 31: Perl 6 Regex und Grammars

Leerzeichen

immer noch \s

\h | \v

horizontal | vertikal

Page 32: Perl 6 Regex und Grammars

Leerzeichen

immer noch \s

\h | \v

horizontal = leer + tabs

Page 33: Perl 6 Regex und Grammars

Oder oder oder?

| ||

Page 34: Perl 6 Regex und Grammars

Oder oder oder?

| ||

'sub' | 'substr'

Page 35: Perl 6 Regex und Grammars

Oder oder oder?

| ||

'sub' | 'substr'

'substr' gewinnt

Page 36: Perl 6 Regex und Grammars

Oder oder oder?

| ||

'sub' || 'substr'

Page 37: Perl 6 Regex und Grammars

Oder oder oder?

| ||

'sub' || 'substr'

'sub' gewinnt

Page 38: Perl 6 Regex und Grammars

Regex Metachar

^ ^^ $ $$ | || &

. ** % %%

\ := # (+Klammern)

Page 39: Perl 6 Regex und Grammars

Regex Metachar

^ ^^ $ $$ | || &

. ** % %%

\ := # (+Klammern)

Page 40: Perl 6 Regex und Grammars

Regex Metachar

^ ^^ $ $$ | || &

. ** % %%

\ := # (+Klammern)

Page 41: Perl 6 Regex und Grammars

Regex Metachar

^ ^^ $ $$ | || &

. ** % %%

\ := # (+Klammern)

Page 42: Perl 6 Regex und Grammars

Quantifikatoren

? + * ** **?

**

% %%

Page 43: Perl 6 Regex und Grammars

Quantifikator **

'243' ~~ /\d ** 2/

Page 44: Perl 6 Regex und Grammars

Quantifikator **

'243' ~~ /\d ** 2/

default to *

Page 45: Perl 6 Regex und Grammars

Quantifikator **

'243' ~~ /\d ** 2/

'243' ~~ /\d ** 2..4/

Page 46: Perl 6 Regex und Grammars

Quantifikator %

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

Page 47: Perl 6 Regex und Grammars

Quantifikator %%

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

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

Page 48: Perl 6 Regex und Grammars

Kein ”eval mode”

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

Page 49: Perl 6 Regex und Grammars

Kein ”eval mode”

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

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

Page 50: Perl 6 Regex und Grammars

Kein ”eval mode”

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

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

s[...] = {…};

Page 51: Perl 6 Regex und Grammars

Kein ”eval mode”

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

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

s[...] = eval {…};

Page 52: Perl 6 Regex und Grammars

Perl 6 Regex

kein /.../x

Page 53: Perl 6 Regex und Grammars

Perl 6 Regex

kein /.../x

ist Standard

Page 54: Perl 6 Regex und Grammars

Eigene Zeichenklasse

P5: [a-m]

Page 55: Perl 6 Regex und Grammars

Eigene Zeichenklasse

P5: [a-m]

P6: <[a m]>]

Page 56: Perl 6 Regex und Grammars

Bereiche Wie Überall

P5: [a-m]

P6: <[a..m]>]

Page 57: Perl 6 Regex und Grammars

Klammern in Regex

Zeichenklasse <[..]>]

Block {..}

Page 58: Perl 6 Regex und Grammars

Klammern in Regex

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

Zeichenklasse <[..]>]

Block {..}

Page 59: Perl 6 Regex und Grammars

Klammern in Regex

(?:pattern) => [pattern]

(?<key>pattern) => $<key> = <pattern>

(?{code}) => {code}

Page 60: Perl 6 Regex und Grammars

Horror Vacui

Page 61: Perl 6 Regex und Grammars

Horror Vacui

kein //

Page 62: Perl 6 Regex und Grammars

Horror Vacui

kein //

/ <prior> /

Page 63: Perl 6 Regex und Grammars

Horror Vacui

kein //

/ <prior> /

/ '' / aka / <?> /

Page 64: Perl 6 Regex und Grammars

Teilfunde

$1

Page 65: Perl 6 Regex und Grammars

Teilfunde

$1 => $0

Page 66: Perl 6 Regex und Grammars

Teilfunde

$1 => $0

$0 => $*EXECUTABLE_NAME

Page 67: Perl 6 Regex und Grammars

Teilfunde

$1 => $0

kein \1 .. \9

Page 68: Perl 6 Regex und Grammars

Teilfunde

$1 => $0

kein:

\L...\E, \U...\E, \Q...\E

Page 69: Perl 6 Regex und Grammars

Perl 6 Regex

$1 => $0

{ lc …}, ...

Page 70: Perl 6 Regex und Grammars

Teilfunde

$1 => $0

$0 ..

Page 71: Perl 6 Regex und Grammars

Teilfunde

$1 => $0

$0 ..

Page 72: Perl 6 Regex und Grammars

Teilfunde

$1 => $0

$0 .. $15

Page 73: Perl 6 Regex und Grammars

Teilfunde

$1 => $0

@() == $0 ..

Page 74: Perl 6 Regex und Grammars

Teilfunde

$1 => $0

@() == $0 ..

@()[1][2]

Page 75: Perl 6 Regex und Grammars

Teilfunde

$1 => $0

( () (…) )

@()[0][1]

Page 76: Perl 6 Regex und Grammars

Regex Variablen

$0 …, @()

$/,

Page 77: Perl 6 Regex und Grammars

Regex Variablen

$0 …, @()

$/, $/<..>

Page 78: Perl 6 Regex und Grammars

Regex Variablen

$0 …, @()

$/, $/<..>

$<..>

Page 79: Perl 6 Regex und Grammars

Regex Variablen

$0 …, @()

$/, $/<..>

$<key> = (...)

Page 80: Perl 6 Regex und Grammars

Operatoren

Page 81: Perl 6 Regex und Grammars

Operatoren

rx//

Page 82: Perl 6 Regex und Grammars

Operatoren

rx//

Warum nicht qr // ?

Page 83: Perl 6 Regex und Grammars

Operatoren

rx//

Subsprache, ! Quoting

Page 84: Perl 6 Regex und Grammars

Operatoren

rx//

$~MAIN $~Q $~Regex

Page 85: Perl 6 Regex und Grammars

Operatoren

~~ rx//

Page 86: Perl 6 Regex und Grammars

Operatoren

~~ rx//

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

Page 87: Perl 6 Regex und Grammars

Operatoren

~~ rx//

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

match comb subst trans

Page 88: Perl 6 Regex und Grammars

Operatoren

ms// ss///

Page 89: Perl 6 Regex und Grammars

Operatoren

ms// ss///

m :s // s :ss ///

Page 90: Perl 6 Regex und Grammars

Operatoren

:sigspace :samespace

m :s // s :ss ///

Page 91: Perl 6 Regex und Grammars

Operatoren

Leerzeichen trennen Wörter

:sigspace :samespace

m :s // s :ss ///

Page 92: Perl 6 Regex und Grammars

Modifikatoren

:g

Page 93: Perl 6 Regex und Grammars

Modifikatoren

:g :i :a :m

Page 94: Perl 6 Regex und Grammars

Modifikatoren

:g :i :a :m

:ii :aa :mm

Page 95: Perl 6 Regex und Grammars

Modifikatoren

:g :i :a :m

:x(n) :nth(n)

Page 96: Perl 6 Regex und Grammars

Modifikatoren

:g :i :a :m

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

Page 97: Perl 6 Regex und Grammars

Modifikatoren

:g :i :a :m

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

:r :ov :ex :rw

Page 98: Perl 6 Regex und Grammars

grammar Methoden

regex {..}

token {..}

rule {..}

Page 99: Perl 6 Regex und Grammars

grammar Methoden

regex {..}

token {..} regex :ratchet {}

rule {..} regex :ratchet :sigspace {}

Page 100: Perl 6 Regex und Grammars

grammar Methodengrammar webpage {

rule TOP {<head> <body>} rule head {<meta>|<title>} …

token title { <?after \<title\> .* <?before \<\/title\> }

Page 101: Perl 6 Regex und Grammars

grammar Methodengrammar webpage {

rule TOP {<head> <body>} rule head {<meta>|<title>} …

token title { <?after \<title\> .* <?before \<\/title\> } $/<head><title>

Page 102: Perl 6 Regex und Grammars

grammar sind Klassen

$~MAIN $~Q $~Regex

Page 103: Perl 6 Regex und Grammars

What I Do

perlfoundation.org/perl6/index.cgi?perl_6_tablets

Page 104: Perl 6 Regex und Grammars

Thank You