and now for something completely different€¦ · lorem ipsum dolor sit amet, consectetur...

307
And now for something completely different @DannyEngelbarts github.com/engelbarts

Upload: others

Post on 24-Jun-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

And now for something completely different

@DannyEngelbartsgithub.com/engelbarts

Page 2: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras
Page 3: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

Image by Ian Burt, https://www.flickr.com/photos/oddsock/

And now for something completely different

@DannyEngelbartsgithub.com/engelbarts

Page 4: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

!! WARNING !!

Page 5: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

!! WARNING !!This presentation may contain traces of Perl

Page 6: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

!! WARNING !!This presentation may contain traces of Perl

s

Page 7: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

Regular Expressions In Python

Page 8: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

Everything you know about

Regular Expressions is wrong

Page 9: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

A little history

Page 10: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

50

Page 11: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

50Regular Events

Page 12: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

50Regular Events 60

Page 13: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

50Regular Events 60

Page 14: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

50Regular Events 60QED text editor

Page 15: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

50Regular Events 60QED text editor

70

Page 16: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

50Regular Events 60QED text editor

70UNIX

Page 17: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

50Regular Events 60QED text editor

70UNIXed

Page 18: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

50Regular Events 60QED text editor

70UNIXedgrep

Page 19: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

50Regular Events 60QED text editor

70UNIXedg/re/p

Page 20: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

50Regular Events 60QED text editor

70UNIXedg/re/p

awk

Page 21: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

50Regular Events 60QED text editor

70UNIXedg/re/p

awksed

Page 22: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

50Regular Events 60QED text editor

70UNIXedg/re/p

awksed

emacs

Page 23: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

50Regular Events 60QED text editor

70UNIXedg/re/p

awksed

emacs

ex

Page 24: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

50Regular Events 60QED text editor

70UNIXedg/re/p

awksed

emacs

exvi

Page 25: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

50Regular Events 60QED text editor

70UNIXedg/re/p

awksed

emacs

exvi 80

Page 26: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

50Regular Events 60QED text editor

8070UNIXedg/re/p

awksed

emacs

exvi

Page 27: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

50Regular Events 60QED text editor

80Larry Wall

70UNIXedg/re/p

awksed

emacs

exvi

Page 28: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

50Regular Events 60QED text editor

80That evil person

70UNIXedg/re/p

awksed

emacs

exvi

Page 29: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

50Regular Events 60QED text editor

80PERLThat evil person

70UNIXedg/re/p

awksed

emacs

exvi

Page 30: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

50Regular Events 60QED text editor

80That evil personPCRE70UNIX

edg/re/p

awksed

emacs

exvi

Page 31: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

90

Page 32: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

90Python

Page 33: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

90Python

Page 34: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

Python

Page 35: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

regexp

Page 36: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

regexpAPI v1

Page 37: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

regex

Page 38: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

regexAPI v2

Page 39: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

regexregex_syntax

Page 40: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

regexregex_syntax awk

Page 41: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

regexregex_syntax awk grep

Page 42: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

regexregex_syntax awk grep egrep

Page 43: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

regexregex_syntax awk grep egrep emacs

Page 44: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

regexregex_syntax awk grep egrep emacs (default!)

Page 45: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

re

Page 46: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

API v3re

Page 47: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

re1re

Page 48: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

Version 2re

Page 49: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

pre

re

Page 50: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

pre

rePCRE

Page 51: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

pre

resre

Page 52: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

pre

resre

Page 53: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

resre

Page 54: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

resre

Page 55: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

re

Page 56: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras
Page 57: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

Everything you know about

Regular Expressions is wrong

Page 58: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

“Everything you know about

Regular Expressions is wrong

Damian Conway

Page 59: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

“Everything you know about

Regular Expressions is wrong

Another Evil Person

Page 60: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

Not your fault.

Page 61: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

“A regular expression is a declarative specification describing

the textual structure to which a matching string must conform”

Page 62: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

A regular expressionIs not declarative

Page 63: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

A regular expressionIs not descriptive

Page 64: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

A regular expressionDoes not specify structure

Page 65: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

A regular expressionDoes not conform

Page 66: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

“A regular expression is a <SOMETHING> <SOMETHING>

<SOMETHING-ing> the <SOMETHING> to which a <SOMETHING> string must

<SOMETHING>”

Page 67: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

“A regular expression is NOT a declarative specification describing

the textual structure to which a matching string must conform”

Page 68: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

A regular expression is code

Page 69: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

“A regular expression is a specification of a block-structured

instruction sequence, which is designed to execute some task on a highly specialised

virtual machine”

Page 70: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

code

Page 71: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

Commands Loops

Assertions Exception Handling

Page 72: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

code

Page 73: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

rotten code

Page 74: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

code

Page 75: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

r”regex string” is a function by itself

Page 76: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

a function that is executed by the regex engine

Page 77: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

a function that returns a result

Page 78: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

True or False

Page 79: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

and might do extra’s

Page 80: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

regexes are code

Page 81: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

To understand regexes you just need to learn the language

Page 82: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

And learn the execution model

Page 83: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

Regexes run in their own little world

Page 84: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

Regexes run in their own little world “vm”

Page 85: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

Theoretically … a Finite State Machine

Page 86: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

In practice … astack-based machine

Page 87: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

In practice … a stack-based machine

like everything else

Page 88: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

Theoretically … a Finite State Machine

Page 89: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

r”abc”

Page 90: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

start matcha b c

r”abc”

Page 91: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

def match(myStr): for index in range(len(myStr)): try:

if myStr[index] != ‘a’: raise

if myStr[index+1] != ‘b’: raise

if myStr[index+2] != ‘c’: raise

return True

except: continue # backtracking return False

Page 92: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

def match(myStr): for index in range(len(myStr)): try:

if myStr[index] != ‘a’: raise

if myStr[index+1] != ‘b’: raise

if myStr[index+2] != ‘c’: raise

return True

except: continue # backtracking return False

Page 93: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

def match(myStr): for index in range(len(myStr)): try:

if myStr[index] != ‘a’: raise

if myStr[index+1] != ‘b’: raise

if myStr[index+2] != ‘c’: raise

return True

except: continue # backtracking return False

Page 94: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

def match(myStr): for index in range(len(myStr)): try:

if myStr[index] != ‘a’: raise

if myStr[index+1] != ‘b’: raise

if myStr[index+2] != ‘c’: raise

return True

except: continue # backtracking return False

Page 95: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

def match(myStr): for index in range(len(myStr)): try:

if myStr[index] != ‘a’: raise

if myStr[index+1] != ‘b’: raise

if myStr[index+2] != ‘c’: raise

return True

except: continue # backtracking return False

Page 96: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

def match(myStr): for index in range(len(myStr)): try:

if myStr[index] != ‘a’: raise

if myStr[index+1] != ‘b’: raise

if myStr[index+2] != ‘c’: raise

return True

except: continue # backtracking return False

Page 97: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

def match(myStr): for index in range(len(myStr)): try:

if myStr[index] != ‘a’: raise

if myStr[index+1] != ‘b’: raise

if myStr[index+2] != ‘c’: raise

return True

except: continue # backtracking return False

Page 98: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

def match(myStr): for index in range(len(myStr)): try:

if myStr[index] != ‘a’: raise

if myStr[index+1] != ‘b’: raise

if myStr[index+2] != ‘c’: raise

return True

except: continue # backtracking return False

Page 99: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

def match(myStr): for index in range(len(myStr)): try:

if myStr[index] != ‘a’: raise

if myStr[index+1] != ‘b’: raise

if myStr[index+2] != ‘c’: raise

return True

except: continue # backtracking return False

Page 100: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

def match(myStr): for index in range(len(myStr)): try:

if myStr[index] != ‘a’: raise

if myStr[index+1] != ‘b’: raise

if myStr[index+2] != ‘c’: raise

return True

except: continue # backtracking return False

Page 101: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

def match(myStr): for index in range(len(myStr)): try:

if myStr[index] != ‘a’: raise

if myStr[index+1] != ‘b’: raise

if myStr[index+2] != ‘c’: raise

return True

except: continue # backtracking return False

Page 102: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

def match(myStr): for index in range(len(myStr)): try:

if myStr[index] != ‘a’: raise

if myStr[index+1] != ‘b’: raise

if myStr[index+2] != ‘c’: raise

return True

except: continue # backtracking return False

Page 103: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

start matcha b c

re.search(r”abc”, “12ababc”)

Page 104: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

start matcha b c

re.search(r”abc”, “12ababc”)

Page 105: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

start matcha b c

re.search(r”abc”, “12ababc”)

Page 106: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

start matcha b c

re.search(r”abc”, “12ababc”)

Page 107: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

start matcha b c

re.search(r”abc”, “12ababc”)

Page 108: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

start matcha b c

re.search(r”abc”, “12ababc”)

Page 109: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

start matcha b c

re.search(r”abc”, “12ababc”)

Page 110: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

start matcha b c

re.search(r”abc”, “12ababc”)

Page 111: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

start matcha b c

re.search(r”abc”, “12ababc”)

Page 112: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

start matcha b c

re.search(r”abc”, “12ababc”)

Page 113: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

start matcha b c

re.search(r”abc”, “12ababc”)

Page 114: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

start matcha b c

re.search(r”abc”, “12ababc”)

Page 115: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

start matcha b c

re.search(r”abc”, “12ababc”)

Page 116: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

start matcha b c

re.search(r”abc”, “12ababc”)

Page 117: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

start matcha b c

re.search(r”abc”, “12ababc”)

Page 118: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

start matcha b c

re.search(r”abc”, “12ababc”)

Page 119: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

start matcha b c

re.search(r”abc”, “12ababc”)

Page 120: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

start matcha b c

re.search(r”abc”, “12ababc”)

Page 121: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

start matcha b c

re.search(r”abc”, “12ababc”)

Page 122: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

start matcha b c

re.search(r”abc”, “12ababc”)

Page 123: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

start matcha b c

re.search(r”abc”, “12ababc”)

Page 124: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

start matcha b c

re.search(r”abc”, “12ababc”)

Page 125: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

start matcha b c

re.search(r”abc”, “12ababc”)

TADA.WAV

Page 126: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

That’s it.

Page 127: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

That’s it.More or less.

Page 128: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

r”abc|abx”

Page 129: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

start

match

a b

c

r”abc|abx”

matchx

Page 130: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

start

a

a

matchb c

matchb x

r”abc|abx”

Page 131: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

starta

a

matchb c

matchb x

re.search(r“abc|abx”, “pabx”)

Page 132: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

start

a

a

matchb c

matchb x

re.search(r“abc|abx”, “pabx”)

Page 133: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

start

a

a

matchb c

matchb x

re.search(r“abc|abx”, “pabx”)

Page 134: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

start

a

a

matchb c

matchb x

re.search(r“abc|abx”, “pabx”)

Page 135: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

start

a

a

matchb c

matchb x

re.search(r“abc|abx”, “pabx”)

Page 136: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

start

a

a

matchb c

matchb x

re.search(r“abc|abx”, “pabx”)

Page 137: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

start

a

a

matchb c

matchb x

re.search(r“abc|abx”, “pabx”)

Page 138: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

start

a

a

matchb c

matchb x

re.search(r“abc|abx”, “pabx”)

Page 139: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

start

a

a

matchb c

matchb x

re.search(r“abc|abx”, “pabx”)

Page 140: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

start

a

a

matchb c

matchb x

re.search(r“abc|abx”, “pabx”)

Page 141: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

start

a

a

matchb c

matchb x

re.search(r“abc|abx”, “pabx”)

Page 142: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

Regex Execution

Page 143: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

Regex ExecutionTry every path

Page 144: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

Regex ExecutionTry leftmost first

Page 145: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

Regex ExecutionTry leftmost first

The upper path in the graph

Page 146: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

Regex ExecutionSuccess on the first full match

Page 147: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

Regex ExecutionFail when all paths fail

Page 148: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

Regex ExecutionTry all paths before moving along

Page 149: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

r = re.compile(r"anteater|antelope|ant") r.search(“An ant encountered an anteater”)

Page 150: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

r = re.compile(r"anteater|antelope|ant") r.search(“An ant encountered an anteater”)

Page 151: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

r = re.compile(r"ant|anteater|antelope") r.search(“An anteater encountered an ant”)

Page 152: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

r = re.compile(r"ant|anteater|antelope") r.search(“An anteater encountered an ant”)

Page 153: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

Regex ExecutionLooks for the first match

Does not look for the best match

Page 154: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

Regex Command language

Page 155: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

All alphanumeric characters

Page 156: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

All alphanumeric charactersDoes the current character match me?

Page 157: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

All alphanumeric charactersDoes the current character match me?

Next

Page 158: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

All alphanumeric charactersDoes the current character match me?

Next Backtrack

Page 159: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

All alphanumeric characters

Page 160: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

All alphanumeric characters and some punctuation

Page 161: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

.

Page 162: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

.Dot

Page 163: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

.Match a “.”

Page 164: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

.Match a “.” or ANY other char

Page 165: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

Except Newline

.Match a “.” or ANY other char

Page 166: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

^

Page 167: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

M̂atches the start

Page 168: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

$

Page 169: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

$Matches the end

Page 170: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

OR

Page 171: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

[OR]

Page 172: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

[OR]

Match an “O” or an “R”

Page 173: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

[a-z]

Page 174: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

[a-z]

Matches a to z

Page 175: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

[a-z]

Matches a to z(lowercase)

Page 176: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

[-az]

Page 177: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

[-az]

Matches “-” or “a” or “z”

Page 178: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

-[az]

Matches “-” and “a” or “z”

Page 179: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

[0-9A-Fa-f]

Page 180: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

[0-9A-Fa-f]

Page 181: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

[0-9A-Fa-f]

Page 182: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

[0-9A-Fa-f]

Page 183: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

[0-9 A-F a-f]

Page 184: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

[0-9 A-F a-f]

Page 185: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

[0-9 A-F a-f]

Page 186: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

[0-9 A-F a-f]

Page 187: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

[0-9 A-F a-f]

Page 188: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

[0-9 A-F a-f]

Page 189: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

NOR

Page 190: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

[^OR]

Page 191: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

[^OR]

Match anything but an “O” or an “R”

Page 192: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

Loops

Page 193: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

Loops??

Page 194: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

LoopsLike while and for in Python

Page 195: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

In regex all loops areboth while and for

Page 196: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

Loop while no exception, but only for M to N iterations

Page 197: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

*

Page 198: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

*Match previouszero or more times

Page 199: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

Match an ‘a’zero or more times

a*

Page 200: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

Match an ‘a’ and ‘b’zero or more times

(ab)*

Page 201: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

Match either ‘a’ or ‘b’zero or more times

[ab]*

Page 202: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

Match anythingzero or more times

.*

Page 203: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

r”a*"

Page 204: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

r”a*" a

Page 205: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

r”[ab]*”

a

b

Page 206: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

r”(abc)*”

a

b

c

Page 207: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

+

Page 208: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

+Match one or more

Page 209: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

r”a+” a

Page 210: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

a

a

r”a+”

Page 211: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

?

Page 212: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

?Match zero or one

Page 213: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

{m}

Page 214: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

{m}Match m times

Page 215: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

{m,n}

Page 216: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

{m,n}Match m to n times

Page 217: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

Regex loops can unloop

Page 218: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

Roll back previousloop match

Page 219: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

Whut?

Page 220: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

“For <b>example</b>.”

Page 221: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

“For <b>example</b>.”

r"<.*>"

Page 222: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

“For <b>example</b>.”

r"<.*>"

Page 223: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

“For <b>example</b>.”

r"<.*>"

Page 224: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

“For <b>example</b>.”

r"<.*>"

Page 225: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

“For <b>example</b>.”

r"<.*>"

Page 226: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

“For <b>example</b>.”

r"<.*>"

Page 227: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

“For <b>example</b>.”

r"<.*>"

Page 228: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

“For <b>example</b>.”

r"<.*>"

Page 229: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

“For <b>example</b>.”

r"<.*>"

Page 230: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

“For <b>example</b>.”

r"<.*>"

Page 231: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

“For <b>example</b>.”

r"<.*>"

Page 232: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

“For <b>example</b>.”

r"<.*>"

Page 233: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

“For <b>example</b>.”

r"<.*>"

Page 234: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

“For <b>example</b>.”

r"<.*>"

Page 235: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

“For <b>example</b>.”

r"<.*>"

Page 236: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

“For <b>example</b>.”

r"<.*>"

Page 237: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

“For <b>example</b>.”

r"<.*>"

Page 238: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

“For <b>example</b>.”

r"<.*>"

Page 239: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

“For <b>example</b>.”

r"<.*>"

Page 240: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

“For <b>example</b>.”

r"<.*>"

Page 241: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

“For <b>example</b>.”

r"<.*>"

Page 242: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

“For <b>example</b>.”

r"<.*>"

Page 243: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

“For <b>example</b>.”

r"<.*>"

Page 244: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

“For <b>example</b>.”

r"<.*>"

Page 245: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

“For <b>example</b>.”

r"<.*>"

Page 246: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

“For <b>example</b>.”

r"<.*>"

Page 247: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

“For <b>example</b>.”

r"<.*>"

Page 248: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

“For <b>example</b>.”

r"<.*>"

Page 249: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras semper auctor neque vitae tempus quam pellentesque nec. Ornare <b>suspendisse</b> sed nisi lacus. Cursus vitae congue mauris rhoncus. Egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium. Senectus et netus et malesuada fames ac. Malesuada pellentesque elit eget gravida cum sociis natoque. Commodo nulla facilisi nullam vehicula ipsum a. Nunc mattis enim ut tellus. Sed vulputate odio ut enim.

Page 250: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras semper auctor neque vitae tempus quam pellentesque nec. Ornare <b>suspendisse</b> sed nisi lacus. Cursus vitae congue mauris rhoncus. Egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium. Senectus et netus et malesuada fames ac. Malesuada pellentesque elit eget gravida cum sociis natoque. Commodo nulla facilisi nullam vehicula ipsum a. Nunc mattis enim ut tellus. Sed vulputate odio ut enim.

Page 251: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras
Page 252: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

Minimal loops

Page 253: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

Minimal loops

r”<.*?>"

Page 254: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

“For <b>example</b>.”

Page 255: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

“For <b>example</b>.”

r”<.*?>"

Page 256: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

“For <b>example</b>.”

r”<.*?>"

Page 257: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

“For <b>example</b>.”

r”<.*?>"

Page 258: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

“For <b>example</b>.”

r”<.*?>"

Page 259: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

“For <b>example</b>.”

r”<.*?>"

Page 260: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

“For <b>example</b>.”

r”<.*?>"

Page 261: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

“For <b>example</b>.”

r”<.*?>"

Page 262: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

“For <b>example</b>.”

r”<.*?>"

Page 263: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

“For <b>example</b>.”

r”<.*?>"

Page 264: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

“For <b>example</b>.”

r”<.*?>"

Page 265: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

“For <b>example</b>.”

r”<.*?>"

Page 266: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

Minimal loops

Execute the commands in the loop in as few times as possible

Page 267: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

r”a*?” a

Page 268: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

r”a*?”

a

Page 269: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

Minimal or Maximal?

Page 270: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

Minimal or Maximal?

First: Use the one that produces the expected result

Page 271: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

Minimal or Maximal?

Second: Use the one that does the least backtracking

Page 272: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

Lorem #ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras semper auctor neque vitae tempus quam pellentesque nec. Ornare suspendisse sed nisi lacus. Cursus vitae congue mauris rhoncus. Egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium.# Senectus et netus et malesuada fames ac. Malesuada pellentesque elit eget gravida cum sociis natoque. Commodo nulla facilisi nullam vehicula ipsum a. Nunc mattis enim ut tellus. Sed vulputate odio ut enim.

Page 273: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

Lorem #ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras semper auctor neque vitae tempus quam pellentesque nec. Ornare suspendisse sed nisi lacus. Cursus vitae congue mauris rhoncus. Egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium.# Senectus et netus et malesuada fames ac. Malesuada pellentesque elit eget gravida cum sociis natoque. Commodo nulla facilisi nullam vehicula ipsum a. Nunc mattis enim ut tellus. Sed vulputate odio ut enim.

Page 274: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

Lorem #ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras semper auctor neque vitae tempus quam pellentesque nec. Ornare suspendisse sed nisi lacus. Cursus vitae congue mauris rhoncus. Egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium.# Senectus et netus et malesuada fames ac. Malesuada pellentesque elit eget gravida cum sociis natoque. Commodo nulla facilisi nullam vehicula ipsum a. Nunc mattis enim ut tellus. Sed vulputate odio ut enim.

Page 275: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

Lorem #ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras semper auctor neque vitae tempus quam pellentesque nec. Ornare suspendisse sed nisi lacus. Cursus vitae congue mauris rhoncus. Egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium.# Senectus et netus et malesuada fames ac. Malesuada pellentesque elit eget gravida cum sociis natoque. Commodo nulla facilisi nullam vehicula ipsum a. Nunc mattis enim ut tellus. Sed vulputate odio ut enim.

r”#.*#”

Page 276: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

Lorem #ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras semper auctor neque vitae tempus quam pellentesque nec. Ornare suspendisse sed nisi lacus. Cursus vitae congue mauris rhoncus. Egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium.# Senectus et netus et malesuada fames ac. Malesuada pellentesque elit eget gravida cum sociis natoque. Commodo nulla facilisi nullam vehicula ipsum a. Nunc mattis enim ut tellus. Sed vulputate odio ut enim.

r”#.*#” 633 ns ± 4.41 ns

Page 277: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

Lorem #ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras semper auctor neque vitae tempus quam pellentesque nec. Ornare suspendisse sed nisi lacus. Cursus vitae congue mauris rhoncus. Egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium.# Senectus et netus et malesuada fames ac. Malesuada pellentesque elit eget gravida cum sociis natoque. Commodo nulla facilisi nullam vehicula ipsum a. Nunc mattis enim ut tellus. Sed vulputate odio ut enim.

r”#.*#” 633 ns ± 4.41 ns

r”#.*?#”

Page 278: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

Lorem #ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras semper auctor neque vitae tempus quam pellentesque nec. Ornare suspendisse sed nisi lacus. Cursus vitae congue mauris rhoncus. Egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium.# Senectus et netus et malesuada fames ac. Malesuada pellentesque elit eget gravida cum sociis natoque. Commodo nulla facilisi nullam vehicula ipsum a. Nunc mattis enim ut tellus. Sed vulputate odio ut enim.

r”#.*#” 633 ns ± 4.41 ns

r”#.*?#” 1.79 µs ± 10.7 ns

Page 279: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

Lorem #ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras semper auctor neque vitae tempus quam pellentesque nec. Ornare suspendisse sed nisi lacus. Cursus vitae congue mauris rhoncus. Egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium.# Senectus et netus et malesuada fames ac. Malesuada pellentesque elit eget gravida cum sociis natoque. Commodo nulla facilisi nullam vehicula ipsum a. Nunc mattis enim ut tellus. Sed vulputate odio ut enim.

r”#.*#” 633 ns ± 4.41 ns

r”#.*?#” 1.79 µs ± 10.7 ns

r”#[^#]*#”

Page 280: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

Lorem #ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras semper auctor neque vitae tempus quam pellentesque nec. Ornare suspendisse sed nisi lacus. Cursus vitae congue mauris rhoncus. Egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium.# Senectus et netus et malesuada fames ac. Malesuada pellentesque elit eget gravida cum sociis natoque. Commodo nulla facilisi nullam vehicula ipsum a. Nunc mattis enim ut tellus. Sed vulputate odio ut enim.

r”#.*#” 633 ns ± 4.41 ns

r”#.*?#” 1.79 µs ± 10.7 ns

r”#[^#]*#” 429 ns ± 3.89 ns

Page 281: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

!r”#.*#”

Page 282: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

!r”#[^#]*#”

Page 283: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

The RE module

Page 284: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

The RE module

myReg = re.compile(r”regex”)

Page 285: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

The RE module

myReg = re.compile(r”regex”)

myReg.search(”string”)

Page 286: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

The RE module

myReg = re.compile(r”regex”)

myReg.search(”string”) # Will match anywhere in the string

Page 287: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

The RE module

myReg = re.compile(r”^regex”)

Page 288: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

The RE module

myReg = re.compile(r”^regex”)

myReg.search(”string”)

Page 289: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

The RE module

myReg = re.compile(r”^regex”)

myReg.search(”string”) # Will match from the start of the string

Page 290: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

The RE module

myReg = re.compile(r”^regex”)

myReg.search(”string”) # Will match from the start of the string

myReg = re.compile(r”regex”)

myReg.match(”string”) # Will match from the start of the string

Page 291: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

The RE module

myReg = re.compile(r”^regex$”)

myReg.search(”string”) # Will only match the whole string

Page 292: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

The RE module

myReg = re.compile(r”^regex$”)

myReg.search(”string”) # Will only match the whole string

myReg = re.compile(r”regex”)

myReg.fullmatch(”string”) # Will only match the whole string

Page 293: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

The RE module

myReg = re.compile(r”regex”)

myReg.split(”string”) # Like str.split() but split on regexes

Page 294: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

The RE module

myReg = re.compile(r”regex”)

myReg.split(”string”) # Like str.split() but split on regexes

myReg.findall(”string”) # return a list of matches

Page 295: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

The RE module

myReg = re.compile(r”regex”)

myReg.split(”string”) # Like str.split() but split on regexes

myReg.findall(”string”) # return a list of matches

myReg.finditer(”string”) # return an iterator of matches

Page 296: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

The RE module

myReg = re.compile(r”regex”)

myReg.split(”string”) # Like str.split() but split on regexes

myReg.findall(”string”) # return a list of matches

myReg.finditer(”string”) # return an iterator of matches

myReg.sub(“repl”, ”string”) # like str.sub() but with regexes

Page 297: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

The RE moduleSpecial Characters, unicode compatible!

\d = [0-9] Digit\D = [^0-9] Not a digit

Page 298: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

The RE module

\d = [0-9] Digit\D = [^0-9] Not a digit \s = [ \t\n\r\f\v] Any whitespace char\S = [^ \t\n\r\f\v] Not a whitespace char

Special Characters, unicode compatible!

Page 299: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

The RE module

\d = [0-9] Digit\D = [^0-9] Not a digit \s = [ \t\n\r\f\v] Any whitespace char\S = [^ \t\n\r\f\v] Not a whitespace char\w = [a-zA-Z0-9_]+ A word\W = [^a-zA-Z0-9_]+ Not a word

Special Characters, unicode compatible!

Page 300: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

The RE module

\d = [0-9] Digit\D = [^0-9] Not a digit \s = [ \t\n\r\f\v] Any whitespace char\S = [^ \t\n\r\f\v] Not a whitespace char\w = [a-zA-Z0-9_]* A word\W = [^a-zA-Z0-9_]* Not a word\b Word boundary\B Not a word boundary

Special Characters, unicode compatible!

Page 301: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

The RE module

re.A re.ASCII (?a) re.I re.IGNORECASE (?i) re.M re.MULTILINE (?m)re.X re.VERBOSE (?x)

Special options or flags

Page 302: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

The RE module

re.A re.ASCII (?a) re.I re.IGNORECASE (?i) re.M re.MULTILINE (?m)re.X re.VERBOSE (?x)

re.search(r“(?xmia)regex”, “some string”)

Special options or flags

Page 303: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

The RE module

re.A re.ASCII (?a) re.I re.IGNORECASE (?i) re.M re.MULTILINE (?m)re.X re.VERBOSE (?x)

re.search(r“(?xmia)regex”, “some string”)

re.search(r”regex”, “somestring”, flags=re.A|re.I|re.M|re.X)

Special options or flags

Page 304: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras
Page 305: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

That’s it.

Page 306: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

That’s it.More or less.

Page 307: And now for something completely different€¦ · Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Cras

Thank You