Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
The Language of Regular Expressions. So You Thi...
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Riga Dev Day
March 13, 2016
78
0
Share
The Language of Regular Expressions. So You Think You Can Speak It? by Rustam Mehmandarov
Riga Dev Day
March 13, 2016
More Decks by Riga Dev Day
See All by Riga Dev Day
Faster Java by Adding Structs (Sort Of)
rigadevday
0
170
Prepare for JDK 9! by Dalibor Topic
rigadevday
0
140
Little Important Things in Distributed Architectures by Andres Jaan Tack
rigadevday
0
150
Oracle 12c for Developers by Alex Nuijten
rigadevday
1
130
Modern Java Component Design with Spring 4.3 by Juergen Hoeller
rigadevday
0
270
Open Source and OpenJDK: Do They Deliver? by Simon Ritter
rigadevday
0
70
Google Apps Integration in Oracle Apex by Richard Martens
rigadevday
0
290
Integration Testing from the Trenches by Nicolas Fränkel
rigadevday
0
240
Distributed Systems at ok.ru by Oleg Anastasyev
rigadevday
0
82
Featured
See All Featured
Accessibility Awareness
sabderemane
1
120
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
260
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
390
The Illustrated Children's Guide to Kubernetes
chrisshort
51
52k
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
2.7k
Done Done
chrislema
186
16k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
230
Mind Mapping
helmedeiros
PRO
1
200
Rebuilding a faster, lazier Slack
samanthasiow
85
9.5k
Building AI with AI
inesmontani
PRO
1
1k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
140
Transcript
The Language of Regular Expressions. So You Think You Can
Speak It? Rustam Mehmandarov Riga Dev Day
The Vision http://xkcd.com/208/
…but regex ain’t one! Oh, wait! http://xkcd.com/1171/
The Reality
None
(([0-9]{4})-([0-9]{2})-([0-9]{2})).*\sINFO\s(.*)
Log4j Log File
.*(INFO|WARN).*
.*(INFO|WARN).*
(([0-9]{4})-([0-9]{2})-([0-9]{2})).*ERROR(.*)
(([0-9]{4})-([0-9]{2})-([0-9]{2})).*ERROR(.*)
^.*192\.168\.0\.6[^9](.*)$
^.*192.168.0.6[^9](.*)
^.*192\.168\.0\.6[^9](.*)$
^.*192\.168\.0\.6[0-9]+[^9](.*)$
flavou?r
Recap: Quantifiers * + ? {num} {num, num}
Recap: Grouping .*(INFO|WARN)(.*) .*(INFO|WARN)(?:.*)
(WA) 2014-09-09 WAR FILE WARN [com.example.logging.MyLog]
(?=WARN)WA 2014-09-09 WAR FILE WARN [com.example.logging.MyLog]
(?=WARN)WA
Recap: Lookaround (?=foo) -> Lookahead (?<=foo) -> Lookbehind (?!foo) ->
Negative Lookahead (?<!foo) -> Negative Lookbehind
Lookahead: Example
The list
Backreferences
Backreferences (contd.)
Text: OSDC is awesome! HTML: OSDC is <em>awesome</em>! Regex: <.+>
Result:
Text: OSDC is awesome! HTML: OSDC is <em>awesome</em>! Regex: <.+?>
Result:
None
http://stackoverflow.com/questions/1732348/ regex-match-open-tags-except-xhtml-self- contained-tags
Quantifiers Revisited Greedy: *, +, ?, {num, num} Non-greedy: *?,
+?, ??, {num, num}?
Final Recap • Know your data! – Think what you
should match – Think what you should not match • Know your flavor • Know your engine (DFA, NFA) – Backtracking • Greediness • Non-capturing parenthesis • Anchors
MOAR! EXAMPLES!
Matching an IP - 1 Idea 1: ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$ Result:
Matching an IP - 2 Idea 2: ^\d\d\d\.\d\d\d\.\d\d\d\.\d\d\d$ Result:
Matching an IP - 3 Idea 3: ^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$ Result:
Matching an IP - 4 Idea 4: ^ ([01]?\d\d?|2[0-4]\d|25[0-5])\. ([01]?\d\d?|2[0-4]\d|25[0-5])\.
([01]?\d\d?|2[0-4]\d|25[0-5])\. ([01]?\d\d?|2[0-4]\d|25[0-5]) $ Result:
Your New Reality! http://xkcd.com/208/
Thank you! rmehmandarov
[email protected]
None