Regex -- Turku Agile Day 011

Preview:

DESCRIPTION

Regex -- Turku Agile Day 011

Citation preview

© blog.staffannoteberg.com (1)Regex Habits

Abstract Machine

© blog.staffannoteberg.com (2)Regex Habits

Glob

© blog.staffannoteberg.com (3)Regex Habits

Origin

© blog.staffannoteberg.com (4)Regex Habits

Functions

© blog.staffannoteberg.com (5)Regex Habits

Architecture

© blog.staffannoteberg.com (6)Regex Habits

Directed Graph (nondeterministic)

© blog.staffannoteberg.com (7)Regex Habits

Alphabet

© blog.staffannoteberg.com (8)Regex Habits

States

© blog.staffannoteberg.com (9)Regex Habits

Transition Table

© blog.staffannoteberg.com (10)Regex Habits

Nondeterministic Finite Automata (NFA)

© blog.staffannoteberg.com (11)Regex Habits

Directed Graph (DFA/NFA)

© blog.staffannoteberg.com (12)Regex Habits

Deterministic Finite Automata (DFA)

© blog.staffannoteberg.com (13)Regex Habits

Regular Expressions

© blog.staffannoteberg.com (14)Regex Habits

Matching One Character

© blog.staffannoteberg.com (15)Regex Habits

Operator #1: Concatenation

© blog.staffannoteberg.com (16)Regex Habits

Operator #2: Kleene Star

© blog.staffannoteberg.com (17)Regex Habits

Operator #3: Alternation

© blog.staffannoteberg.com (18)Regex Habits

Quiz #1

Keskiviikko|(Maanan|Tiis|Tors| Perjan|Lauan|Sunnun)tai

© blog.staffannoteberg.com (19)Regex Habits

Parentheses

© blog.staffannoteberg.com (20)Regex Habits

Quiz #2

saippuakivikauppias

© blog.staffannoteberg.com (21)Regex Habits

Finite

© blog.staffannoteberg.com (22)Regex Habits

Regular Regex?

© blog.staffannoteberg.com (23)Regex Habits

Greedy (Kleene Star)

© blog.staffannoteberg.com (24)Regex Habits

Backtracking (NFA)

© blog.staffannoteberg.com (25)Regex Habits

Leftmost (NFA Alternation)

© blog.staffannoteberg.com (26)Regex Habits

Dialects

© blog.staffannoteberg.com (27)Regex Habits

Regex Literal

© blog.staffannoteberg.com (28)Regex Habits

Architecture

© blog.staffannoteberg.com (29)Regex Habits

Regex Objects

© blog.staffannoteberg.com (30)Regex Habits

Match Object

© blog.staffannoteberg.com (31)Regex Habits

Quantifiers

© blog.staffannoteberg.com (32)Regex Habits

Quiz #3

(0|1|2)(0|1|2|3|4|5|6|7|8|9){2}

© blog.staffannoteberg.com (33)Regex Habits

Quantifier algebra

© blog.staffannoteberg.com (34)Regex Habits

Positive Closure over Closure

© blog.staffannoteberg.com (35)Regex Habits

Character Class

© blog.staffannoteberg.com (36)Regex Habits

Quiz #4

[a-z0-9._-]+@[a-z0-9.-]+\.[a-z]{2,6}

© blog.staffannoteberg.com (37)Regex Habits

Quiz #5

25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9]

© blog.staffannoteberg.com (38)Regex Habits

Metacharacters – shorthands

© blog.staffannoteberg.com (39)Regex Habits

Quiz #6

2(0|1)\d\d1

© blog.staffannoteberg.com (40)Regex Habits

Quiz #7

(0|(00|\+)358)(4\d|50)\d{7}

© blog.staffannoteberg.com (41)Regex Habits

Metacharacters – dot

© blog.staffannoteberg.com (42)Regex Habits

Economical use of Dot

© blog.staffannoteberg.com (43)Regex Habits

Quiz #8

.+@.+

© blog.staffannoteberg.com (44)Regex Habits

Metacharacters – Unicode

© blog.staffannoteberg.com (45)Regex Habits

Quiz #9

\d+(,\d\d)?\s?\u20AC

© blog.staffannoteberg.com (46)Regex Habits

Assertions – Anchor

© blog.staffannoteberg.com (47)Regex Habits

Quiz #10

^\s+

\s+$

© blog.staffannoteberg.com (48)Regex Habits

Assertions – Lookaround

© blog.staffannoteberg.com (49)Regex Habits

Quiz #11

^(?=.*\d)(?=.*([a-zA-Z])).{8,40}$

© blog.staffannoteberg.com (50)Regex Habits

Mode

© blog.staffannoteberg.com (51)Regex Habits

Capture and Backreference

© blog.staffannoteberg.com (52)Regex Habits

Quiz #12

<(\w+)[^>]*>[^<]*</\1>

© blog.staffannoteberg.com (53)Regex Habits

Lazy Quantifiers

© blog.staffannoteberg.com (54)Regex Habits

Web Test bench

© blog.staffannoteberg.com (55)Regex Habits

REPL Test bench

© blog.staffannoteberg.com (56)Regex Habits

Test-driven development

© blog.staffannoteberg.com (57)Regex Habits

Study data source

© blog.staffannoteberg.com (58)Regex Habits

Accept some incorrect

© blog.staffannoteberg.com (59)Regex Habits

Deny some correct

© blog.staffannoteberg.com (60)Regex Habits

Simple method

© blog.staffannoteberg.com (61)Regex Habits

Shrink or Expand

© blog.staffannoteberg.com (62)Regex Habits

Split

© blog.staffannoteberg.com (63)Regex Habits

Blend imperative and regex

© blog.staffannoteberg.com (64)Regex Habits

Context unaware

© blog.staffannoteberg.com (65)Regex Habits

Consider Regex modes

© blog.staffannoteberg.com (66)Regex Habits

Regex Inject Attack

© blog.staffannoteberg.com (67)Regex Habits

Documentation

© blog.staffannoteberg.com (68)Regex Habits

Use Lazy Quantifiers

© blog.staffannoteberg.com (69)Regex Habits

Fail fast

© blog.staffannoteberg.com (70)Regex Habits

Compile only once

© blog.staffannoteberg.com (71)Regex Habits

Minimize Nested Quantifiers

© blog.staffannoteberg.com (72)Regex Habits

Boundaries in find

© blog.staffannoteberg.com (73)Regex Habits

Applications

© blog.staffannoteberg.com (74)Regex Habits

Resources

© blog.staffannoteberg.com (75)Regex Habits

Staffan Nöteberg

Book:Pomodoro Technique Illustratedwww.pomodoro-book.com

Twitter: staffannoteberghttp://blog.staffannoteberg.com