Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Upcoming SlideShare
RubyConfX Keynote
Next
Download to read offline and view in fullscreen.

0

Share

Download to read offline

Regexes

Download to read offline

Related Audiobooks

Free with a 30 day trial from Scribd

See all
  • Be the first to like this

Regexes

  1. 1. Reguliere expressies Areg(uliereh)?ex(?(1)pressi|)esz
  2. 2. WTF? • http://download.jgsoft.com/buddy/SetupRegexBuddyDemo.exe
  3. 3. Geschiedenis • Automata-theorie, formele talen • Stephen Cole Kleene, Ken Thompson • QED, ed, grep • expr, AWK, Emacs, vi, lex • Perl, PCRE, &c.
  4. 4. Syntaxis • Areg(uliereh)?ex(?(1)pressi|)esz • (?:[0-9]{3}.){3}[0-9]{3} • (?:…) • (…) • ?, *, + • A, z, h, d, … • (?(…)…|…) • .{…} • […], [^…]
  5. 5. Opdracht 1 • Schrijf een regex waarmee je commandline-input kunt matchen. o mijn_script --param=5 -d -f • Matches: o --param=5 o -d o -f
  6. 6. Praktijk: getallen • [0-9] o 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 • [1-9][0-9]* o elke positieve integer • [1-4]?[0-9]|5[0-5] o 0 <= input >= 55
  7. 7. Opdracht 2 • IP(v4)-adressen zijn niet bijzonder lastig te matchen • Vier octets tussen 0 en 255, zonder voorloopnullen • 0.0.0.0 • 127.0.0.1 • 192.168.1.254 • 255.255.255.255
  8. 8. Opdracht 2 -- revisited • Hé, dat komt me bekend voor… o filter_var(‘127.0.0.1’, FILTER_FLAG_IPV4); • Regexes zijn geen heilige graal
  9. 9. Praktijk: HTML • DOMDocument… • BBCode/UBB • Simpel formaat: <naam attribuut=“waarde”> o Beperkingen met regexes: een herhalend subpatroon kun je niet opslaan • Noodzakelijke twee stappen o Eerst een hele tag matchen o Daarna apart de attributen eruit halen
  10. 10. Opdracht 3 • Schrijf twee regexes o HTML-tags o Attributen in HTML-tags • Voor de durvers o Schrijf een regex die een <img>-tag matcht en in het eerste subpatroon de waarde van het src-attribuut bevat.
  11. 11. De vaakst voorkomende fout • .* o Catastrofisch backtracken • AUW! • Wees specifiek • Niet compleet overbodig o ^[a-z]+#(.*) • Simpel voorbeeld: tot aan het einde. Geen kans op backtracken • Lazy-matchen: .*? o Je kunt altijd specifiek zijn, dus onnodig.
  12. 12. Opdracht 4 • CSV-records o Regel vinden waarvan het twaalfde veld met “P” begint o ^(.*?,){11}P • Wat gebeurt er… Als het twaalfde veld niet met “P” begint? • Herschrijf de regex zo dat hij altijd goed matcht.
  13. 13. Gefeliciteerd!

Views

Total views

544

On Slideshare

0

From embeds

0

Number of embeds

9

Actions

Downloads

7

Shares

0

Comments

0

Likes

0

×