Loading…

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

Like this presentation? Why not share!

Reguláris Kifejezések Alapjai

on

  • 883 views

Az alábbi előadás fóliái: http://www.facebook.com/event.php?eid=162998453763080

Az alábbi előadás fóliái: http://www.facebook.com/event.php?eid=162998453763080

Statistics

Views

Total Views
883
Views on SlideShare
883
Embed Views
0

Actions

Likes
0
Downloads
2
Comments
0

0 Embeds 0

No embeds

Accessibility

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Reguláris Kifejezések Alapjai Reguláris Kifejezések Alapjai Presentation Transcript

  • A reguláris kifejezések alapjai
    • A programozás fekete mágiája
  • Mi is az a reguláris kifejezés?
    • A reguláris kifejezés (angolul regular expression) egy olyan, bizonyos szintaktikai szabályok szerint leírt string , amivel meghatározható stringek egy halmaza .
    • Nevének rövidítésére gyakran a regexp vagy regex kifejezés használatos.
  • Miért érdemes ismerni?
    • Egyszerű nyelv, aminek segítségével szövegeket írhatunk le
    • Néha egyszerűbb regexp-et használni, mint más metódusokat
    • Nagyon gyors tud lenni
    • Te lehetsz az, aki a többi programozót elriasztod, nem ők téged!
  • Alapok
    • (?:http://(?:(?:(?:(?:(?:[a-zA-Zd](?:(?:[a-zA-Zd]|-)*[a-zA-Zd])?).)*(?:[a-zA-Z](?:(?:[a-zA-Zd]|-)*[a-zA-Zd])?))|(?:(?:d+)(?:.(?:d+)){3}))(?::(?:d+))?)(?:/(?:(?:(?:(?:[a-zA-Zd$-_.+!*'(),]|(?:%[a-fA-Fd]{2}))|[;:@&=])*)(?:/(?:(?:(?:[a-zA-Zd$-_.+!*'(),]|(?:%[a-fA-Fd]{2}))|[;:@&=])*))*)(?:?(?:(?:(?:[a-zA-Zd$-_.+!*'(),]|(?:%[a-fA-Fd]{2}))|[;:@&=])*))?)?)|(?:ftp://(?:(?:(?:(?:(?:[a-zA-Zd$-_.+!*'(),]|(?:%[a-fA-Fd]{2}))|[;?&=])*)(?::(?:(?:(?:[a-zA-Zd$-_.+!*'(),]|(?:%[a-fA-Fd]{2}))|[;?&=])*))?@)?(?:(?:(?:(?:(?:[a-zA-Zd](?:(?:[a-zA-Zd]|-)*[a-zA-Zd])?).)*(?:[a-zA-Z](?:(?:[a-zA-Zd]|-)*[a-zA-Zd])?))|(?:(?:d+)(?:.(?:d+)){3}))(?::(?:d+))?))(?:/(?:(?:(?:(?:[a-zA-Zd$-_.+!*'(),]|(?:%[a-fA-Fd]{2}))|[?:@&=])*)(?:/(?:(?:(?:[a-zA-Zd$-_.+!*'(),]|(?:%[a-fA-Fd]{2}))|[?:@&=])*))*)(?:;type=[AIDaid])?)?)|(?:news:(?:(?:(?:(?:[a-zA-Zd$-_.+!*'(),]|(?:%[a-fA-Fd]{2}))|[;/?:&=])+@(?:(?:(?:(?:[a-zA-Zd](?:(?:[a-zA-Zd]|-)*[a-zA-Zd])?).)*(?:[a-zA-Z](?:(?:[a-zA-Zd]|-)*[a-zA-Zd])?))|(?:(?:d+)(?:.(?:d+)){3})))|(?:[a-zA-Z](?:[a-zA-Zd]|[_.+-])*)|*))|(?:nntp://(?:(?:(?:(?:(?:[a-zA-Zd](?:(?:[a-zA-Zd]|-)*[a-zA-Zd])?).)*(?:[a-zA-Z](?:(?:[a-zA-Zd]|-)*[a-zA-Zd])?))|(?:(?:d+)(?:.(?:d+)){3}))(?::(?:d+))?)/(?:[a-zA-Z](?:[a-zA-Zd]|[_.+-])*)(?:/(?:d+))?)|(?:telnet://(?:(?:(?:(?:(?:[a-zA-Zd$-_.+!*'(),]|(?:%[a-fA-Fd]{2}))|[;?&=])*)(?::(?:(?:(?:[a-zA-Zd$-_.+!*'(),]|(?:%[a-fA-Fd]{2}))|[;?&=])*))?@)?(?:(?:(?:(?:(?:[a-zA-Zd](?:(?:[a-zA-Zd]|-)*[a-zA-Zd])?).)*(?:[a-zA-Z](?:(?:[a-zA-Zd]|-)*[a-zA-Zd])?))|(?:(?:d+)(?:.(?:d+)){3}))(?::(?:d+))?))/?)|(?:gopher://(?:(?:(?:(?:(?:[a-zA-Zd](?:(?:[a-zA-Zd]|-)*[a-zA-Zd])?).)*(?:[a-zA-Z](?:(?:[a-zA-Zd]|-)*[a-zA-Zd])?))|(?:(?:d+)(?:.(?:d+)){3}))(?::(?:d+))?)(?:/(?:[a-zA-Zd$-_.+!*'(),;/?:@&=]|(?:%[a-fA-Fd]{2}))(?:(?:(?:[a-zA-Zd$-_.+!*'(),;/?:@&=]|(?:%[a-fA-Fd]{2}))*)(?:%09(?:(?:(?:[a-zA-Zd$-_.+!*'(),]|(?:%[a-fA-Fd]{2}))|[;:@&=])*)(?:%09(?:(?:[a-zA-Zd$-_.+!*'(),;/?:@&=]|(?:%[a-fA-Fd]{2}))*))?)?)?)?)|(?:wais://(?:(?:(?:(?:(?:[a-zA-Zd](?:(?:[a-zA-Zd]|-)*[a-zA-Zd])?).)*(?:[a-zA-Z](?:(?:[a-zA-Zd]|-)*[a-zA-Zd])?))|(?:(?:d+)(?:.(?:d+)){3}))(?::(?:d+))?)/(?:(?:[a-zA-Zd$-_.+!*'(),]|(?:%[a-fA-Fd]{2}))*)(?:(?:/(?:(?:[a-zA-Zd$-_.+!*'(),]|(?:%[a-fA-Fd]{2}))*)/(?:(?:[a-zA-Zd$-_.+!*'(),]|(?:%[a-fA-Fd]{2}))*))|?(?:(?:(?:[a-zA-Zd$-_.+!*'(),]|(?:%[a-fA-Fd]{2}))|[;:@&=])*))?)|(?:mailto:(?:(?:[a-zA-Zd$-_.+!*'(),;/?:@&=]|(?:%[a-fA-Fd]{2}))+))|(?:file://(?:(?:(?:(?:(?:[a-zA-Zd](?:(?:[a-zA-Zd]|-)*[a-zA-Zd])?).)*(?:[a-zA-Z](?:(?:[a-zA-Zd]|-)*[a-zA-Zd])?))|(?:(?:d+)(?:.(?:d+)){3}))|localhost)?/(?:(?:(?:(?:[a-zA-Zd$-_.+!*'(),]|(?:%[a-fA-Fd]{2}))|[?:@&=])*)(?:/(?:(?:(?:[a-zA-Zd$-_.+!*'(),]|(?:%[a-fA-Fd]{2}))|[?:@&=])*))*))|(?:prospero://(?:(?:(?:(?:(?:[a-zA-Zd](?:(?:[a-zA-Zd]|-)*[a-zA-Zd])?).)*(?:[a-zA-Z](?:(?:[a-zA-Zd]|-)*[a-zA-Zd])?))|(?:(?:d+)(?:.(?:d+)){3}))(?::(?:d+))?)/(?:(?:(?:(?:[a-zA-Zd$-_.+!*'(),]|(?:%[a-fA-Fd]{2}))|[?:@&=])*)(?:/(?:(?:(?:[a-zA-Zd$-_.+!*'(),]|(?:%[a-fA-Fd]{2}))|[?:@&=])*))*)(?:(?:;(?:(?:(?:[a-zA-Zd$-_.+!*'(),]|(?:%[a-fA-Fd]{2}))|[?:@&])*)=(?:(?:(?:[a-zA-Zd$-_.+!*'(),]|(?:%[a-fA-Fd]{2}))|[?:@&])*)))*)|(?:ldap://(?:(?:(?:(?:(?:(?:[a-zA-Zd](?:(?:[a-zA-Zd]|-)*[a-zA-Zd])?).)*(?:[a-zA-Z](?:(?:[a-zA-Zd]|-)*[a-zA-Zd])?))|(?:(?:d+)(?:.(?:d+)){3}))(?::(?:d+))?))?/(?:(?:(?:(?:(?:(?:(?:[a-zA-Zd]|%(?:3d|[46][a-fA-Fd]|[57][Aad]))|(?:%20))+|(?:OID|oid).(?:(?:d+)(?:.(?:d+))*))(?:(?:%0[Aa])?(?:%20)*)=(?:(?:%0[Aa])?(?:%20)*))?(?:(?:[a-zA-Zd$-_.+!*'(),]|(?:%[a-fA-Fd]{2}))*))(?:(?:(?:%0[Aa])?(?:%20)*)+(?:(?:%0[Aa])?(?:%20)*)(?:(?:(?:(?:(?:[a-zA-Zd]|%(?:3d|[46][a-fA-Fd]|[57][Aad]))|(?:%20))+|(?:OID|oid).(?:(?:d+)(?:.(?:d+))*))(?:(?:%0[Aa])?(?:%20)*)=(?:(?:%0[Aa])?(?:%20)*))?(?:(?:[a-zA-Zd$-_.+!*'(),]|(?:%[a-fA-Fd]{2}))*)))*)(?:(?:(?:(?:%0[Aa])?(?:%20)*)(?:[;,])(?:(?:%0[Aa])?(?:%20)*))(?:(?:(?:(?:(?:(?:[a-zA-Zd]|%(?:3d|[46][a-fA-Fd]|[57][Aad]))|(?:%20))+|(?:OID|oid).(?:(?:d+)(?:.(?:d+))*))(?:(?:%0[Aa])?(?:%20)*)=(?:(?:%0[Aa])?(?:%20)*))?(?:(?:[a-zA-Zd$-_.+!*'(),]|(?:%[a-fA-Fd]{2}))*))(?:(?:(?:%0[Aa])?(?:%20)*)+(?:(?:%0[Aa])?(?:%20)*)(?:(?:(?:(?:(?:[a-zA-Zd]|%(?:3d|[46][a-fA-Fd]|[57][Aad]))|(?:%20))+|(?:OID|oid).(?:(?:d+)(?:.(?:d+))*))(?:(?:%0[Aa])?(?:%20)*)=(?:(?:%0[Aa])?(?:%20)*))?(?:(?:[a-zA-Zd$-_.+!*'(),]|(?:%[a-fA-Fd]{2}))*)))*))*(?:(?:(?:%0[Aa])?(?:%20)*)(?:[;,])(?:(?:%0[Aa])?(?:%20)*))?)(?:?(?:(?:(?:(?:[a-zA-Zd$-_.+!*'(),]|(?:%[a-fA-Fd]{2}))+)(?:,(?:(?:[a-zA-Zd$-_.+!*'(),]|(?:%[a-fA-Fd]{2}))+))*)?)(?:?(?:base|one|sub)(?:?(?:((?:[a-zA-Zd$-_.+!*'(),;/?:@&=]|(?:%[a-fA-Fd]{2}))+)))?)?)?)|(?:(?:z39.50[rs])://(?:(?:(?:(?:(?:[a-zA-Zd](?:(?:[a-zA-Zd]|-)*[a-zA-Zd])?).)*(?:[a-zA-Z](?:(?:[a-zA-Zd]|-)*[a-zA-Zd])?))|(?:(?:d+)(?:.(?:d+)){3}))(?::(?:d+))?)(?:/(?:(?:(?:[a-zA-Zd$-_.+!*'(),]|(?:%[a-fA-Fd]{2}))+)(?:+(?:(?:[a-zA-Zd$-_.+!*'(),]|(?:%[a-fA-Fd]{2}))+))*(?:?(?:(?:[a-zA-Zd$-_.+!*'(),]|(?:%[a-fA-Fd]{2}))+))?)?(?:;esn=(?:(?:[a-zA-Zd$-_.+!*'(),]|(?:%[a-fA-Fd]{2}))+))?(?:;rs=(?:(?:[a-zA-Zd$-_.+!*'(),]|(?:%[a-fA-Fd]{2}))+)(?:+(?:(?:[a-zA-Zd$-_.+!*'(),]|(?:%[a-fA-Fd]{2}))+))*)?))|(?:cid:(?:(?:(?:[a-zA-Zd$-_.+!*'(),]|(?:%[a-fA-Fd]{2}))|[;?:@&=])*))|(?:mid:(?:(?:(?:[a-zA-Zd$-_.+!*'(),]|(?:%[a-fA-Fd]{2}))|[;?:@&=])*)(?:/(?:(?:(?:[a-zA-Zd$-_.+!*'(),]|(?:%[a-fA-Fd]{2}))|[;?:@&=])*))?)|(?:vemmi://(?:(?:(?:(?:(?:[a-zA-Zd](?:(?:[a-zA-Zd]|-)*[a-zA-Zd])?).)*(?:[a-zA-Z](?:(?:[a-zA-Zd]|-)*[a-zA-Zd])?))|(?:(?:d+)(?:.(?:d+)){3}))(?::(?:d+))?)(?:/(?:(?:(?:[a-zA-Zd$-_.+!*'(),]|(?:%[a-fA-Fd]{2}))|[/?:@&=])*)(?:(?:;(?:(?:(?:[a-zA-Zd$-_.+!*'(),]|(?:%[a-fA-Fd]{2}))|[/?:@&])*)=(?:(?:(?:[a-zA-Zd$-_.+!*'(),]|(?:%[a-fA-Fd]{2}))|[/?:@&])*))*))?)|(?:imap://(?:(?:(?:(?:(?:(?:(?:[a-zA-Zd$-_.+!*'(),]|(?:%[a-fA-Fd]{2}))|[&=~])+)(?:(?:;[Aa][Uu][Tt][Hh]=(?:*|(?:(?:(?:[a-zA-Zd$-_.+!*'(),]|(?:%[a-fA-Fd]{2}))|[&=~])+))))?)|(?:(?:;[Aa][Uu][Tt][Hh]=(?:*|(?:(?:(?:[a-zA-Zd$-_.+!*'(),]|(?:%[a-fA-Fd]{2}))|[&=~])+)))(?:(?:(?:(?:[a-zA-Zd$-_.+!*'(),]|(?:%[a-fA-Fd]{2}))|[&=~])+))?))@)?(?:(?:(?:(?:(?:[a-zA-Zd](?:(?:[a-zA-Zd]|-)*[a-zA-Zd])?).)*(?:[a-zA-Z](?:(?:[a-zA-Zd]|-)*[a-zA-Zd])?))|(?:(?:d+)(?:.(?:d+)){3}))(?::(?:d+))?))/(?:(?:(?:(?:(?:(?:[a-zA-Zd$-_.+!*'(),]|(?:%[a-fA-Fd]{2}))|[&=~:@/])+)?;[Tt][Yy][Pp][Ee]=(?:[Ll](?:[Ii][Ss][Tt]|[Ss][Uu][Bb])))|(?:(?:(?:(?:[a-zA-Zd$-_.+!*'(),]|(?:%[a-fA-Fd]{2}))|[&=~:@/])+)(?:?(?:(?:(?:[a-zA-Zd$-_.+!*'(),]|(?:%[a-fA-Fd]{2}))|[&=~:@/])+))?(?:(?:;[Uu][Ii][Dd][Vv][Aa][Ll][Ii][Dd][Ii][Tt][Yy]=(?:[1-9]d*)))?)|(?:(?:(?:(?:[a-zA-Zd$-_.+!*'(),]|(?:%[a-fA-Fd]{2}))|[&=~:@/])+)(?:(?:;[Uu][Ii][Dd][Vv][Aa][Ll][Ii][Dd][Ii][Tt][Yy]=(?:[1-9]d*)))?(?:/;[Uu][Ii][Dd]=(?:[1-9]d*))(?:(?:/;[Ss][Ee][Cc][Tt][Ii][Oo][Nn]=(?:(?:(?:[a-zA-Zd$-_.+!*'(),]|(?:%[a-fA-Fd]{2}))|[&=~:@/])+)))?)))?)|(?:nfs:(?:(?://(?:(?:(?:(?:(?:[a-zA-Zd](?:(?:[a-zA-Zd]|-)*[a-zA-Zd])?).)*(?:[a-zA-Z](?:(?:[a-zA-Zd]|-)*[a-zA-Zd])?))|(?:(?:d+)(?:.(?:d+)){3}))(?::(?:d+))?)(?:(?:/(?:(?:(?:(?:(?:[a-zA-Zd$-_.!~*'(),])|(?:%[a-fA-Fd]{2})|[:@&=+])*)(?:/(?:(?:(?:[a-zA-Zd$-_.!~*'(),])|(?:%[a-fA-Fd]{2})|[:@&=+])*))*)?)))?)|(?:/(?:(?:(?:(?:(?:[a-zA-Zd$-_.!~*'(),])|(?:%[a-fA-Fd]{2})|[:@&=+])*)(?:/(?:(?:(?:[a-zA-Zd$-_.!~*'(),])|(?:%[a-fA-Fd]{2})|[:@&=+])*))*)?))|(?:(?:(?:(?:(?:[a-zA-Zd$-_.!~*'(),])|(?:%[a-fA-Fd]{2})|[:@&=+])*)(?:/(?:(?:(?:[a-zA-Zd$-_.!~*'(),])|(?:%[a-fA-Fd]{2})|[:@&=+])*))*)?)))
  • Alap használat illeszkedjen “foo”-ra cseréljük le “bar”-ra PHP preg_match(‘/foo/’, $myString) preg_replace(‘/foo/’, ‘bar’, $myString) JavaScript /foo/.test(myString) myString.replace(/foo/, ‘bar’); Perl /foo/ s/foo/bar/ Vi /foo/ :s/foo/bar/ TextMate ⌘ -F, Find: foo ⌘ -F Find: foo, Replace: bar
  • Meta karakterek
    • ^ $ . [ ] | ( ) ? * + { }
    • Ha ezekre a karakterekre illeszkedni akarunk, akkor escape-eljük őket: “”, “$”
  • Karakter osztályok . (pont) Minden karakter [abc] a, b vagy c karakter [a-c] Ugyanaz, mint a fenti, egy karakter halmaza [^abc] Akármilyen karakter, kivéve a, b vagy c [a-z&&[^aeiou]] Akármelyik betű a-tól z-ig, kivéve a magánhangzók [a-Z] HIBÁS! Érvénytelen karakterosztály
  • Speciális karakterek w “ word” karakterek (locale függő!) d számok t n r tabulátor, sortörés és return karakterek s whitespace = [tnvfr ] b szó határoló 1 2 … 9 W D és a többi pont az ellenkezője a kisbetűsnek
  • Példa This reveals that plain text is in fact the technical user's way to regard a file or a sequence of bytes. In this sense, there is no plain text. /b[w&&[^aA]]+b/ /W{2,}w+b/
  • Példa This reveals that plain text is in fact the technical user 's way to regard a file or a sequence of bytes . In this sense , there is no plain text . /b [w&&[^aA]]+ b/ / W{2,} w+ b/
  • Alapok
    • A a string elejét
    • Z a string vége, vagy sortörés előtti pozíció
    • z a string vége
    • A ^ jelöli a sor elejét
    • A $ jelöli a sor végét
  • Ismétlők
    • Klasszikus mohók: ?, *, +
    • Specifikusak: {1}, {1,}, {1,5}
      • ? == {0,1}
      • * == {0,}
      • + == {1,}
    • Nem mohók (lusták): ??, *?, +?, {5,7}?
  • Példa This reveals that plain text is in fact the technical user's way to regard a file or a sequence of bytes. In this sense, there is no plain text. /reveal(.*)plain/ /reveal(.*?)plain/ /t.{2,3}t/
  • Példa This reveal s that plain text is in fact the technical user's way to regard a file or a sequence of bytes. In this sense, there is no plain text. / reveal (.*) plain / /reveal(.*?)plain/ /t.{2,3}t/
  • Példa This reveal s that plain text is in fact the technical user's way to regard a file or a sequence of bytes. In this sense, there is no plain text. /reveal(.*)plain/ / reveal (.*?) plain / /t.{2,3}t/
  • Példa This reveals t ha t plain t ex t is in fact t he t echnical user's way to regard a file or a sequence of bytes. In this sense, there is no plain t ex t . /reveal(.*)plain/ /reveal(.*?)plain/ / t .{2,3} t /
  • Alternatívok Egy kifejezésben a “|” a vagyot jelenti. Teljes kifejezéseket lehet rakni a két oldalára, mindkettő illeszkedhet. Példa: /alma|mogyorok?/ illeszkedhet az “alma”, “mogyoro” és “mogyorok” szavakra. a|b “ a” vagy “b” foo|bar “ foo” vagy “bar” foo|bar|baz “ foo”, “bar” vagy “baz”
  • Csoportosítás (…) Csoportosítja a tartalmat a zárójelekben. Befolyásolja az alternatívokat és az ismétlőket. Bekapcsolja az illeszkedő tartalom mentését. be|kikapcsol “ be” vagy “kikapcsol” (be|ki)kapcsol “ bekapcsol” vagy “kikapcsol” (ha)+ illeszkedik a “ha”, “haha”, “hahaha”, … szavakra Greg(ory)? “ Greg” vagy “Gregory”
  • Csoportosítás (d+(.d+)) $1 $2
  • Csoportosítás ([‘“]).+?1 … oldalukon kifúrt gyűrűk, egyszerű “szelepek” nyitották-zárták attól függően…így a fát és a belőle készült auloszt is gyakran ‘líbiainak’ nevezték.
  • Csoportosítás ([“‘]) .+? 1 … oldalukon kifúrt gyűrűk, egyszerű “ szelepek “ nyitották-zárták attól függően…így a fát és a belőle készült auloszt is gyakran ‘ líbiainak ‘ nevezték.
  • Csoportosítás (?P<name>) Nevesített hivatkozások a csoportokban (?=name) Nevesített csoportra hivatkozás
  • Előre-/hátratekintés
    • Null szélességű csoportok
    pozitív negatív előre (?=...) (?!...) hátra (?<=...) (?<!...)
  • Példa / .*?@twistedtribe / / .*?(?=@twitedtribe) / [email_address] .com adam.brunner @twistedtribe.com
  • Feltételek
    • (?(feltetel)igaz-minta|hamis-minta)
    • vagy
    • (?(feltetel)igaz-minta)
  • Példa / (<)?[a-z]+(?(1)>) / / ^(?(?=b)bar|f) / <tag> <foo <bar attr=“”> foo bar baz
  • Példák nem feltétlenül életszerűek
  • IP cím ellenőrzése
  • IP cím ellenőrzése
    • /d{1,3}.d{1,3}.d{1,3}.d{1,3}/
    • 999.999.999.999
  • IP cím ellenőrzése
    • / (d{1,3}.){3} d{1,3}/
    • 999.999.999.999
  • IP cím ellenőrzése
    • 0-9
    • 10-99
    • 100-199
    • 200-249
    • 250-255
  • IP cím ellenőrzése
    • d
    • 10-99
    • 100-199
    • 200-249
    • 250-255
  • IP cím ellenőrzése
    • d
    • d{2}
    • 100-199
    • 200-249
    • 250-255
  • IP cím ellenőrzése
    • d
    • d{2}
    • 1d{2}
    • 200-249
    • 250-255
  • IP cím ellenőrzése
    • d
    • d{2}
    • 1d{2}
    • 2[0-4]d
    • 250-255
  • IP cím ellenőrzése
    • d
    • d{2}
    • 1d{2}
    • 2[0-4]d
    • 25[0-5]
  • IP cím ellenőrzése
    • /
    • (
    • (d|d{2}|1d{2}|2[0-4]d|25[0-5])
    • .
    • ){3}
    • (d|d{2}|1d{2}|2[0-4]d|25[0-5])
    • /x
    255.255.255.255
  • IP cím ellenőrzése
    • /
    • (
    • ( d|d{2} |1d{2}|2[0-4]d|25[0-5])
    • .
    • ){3}
    • (d|d{2}|1d{2}|2[0-4]d|25[0-5])
    • /x
    255.255.255.255
  • IP cím ellenőrzése
    • /
    • (
    • ( d?d |1d{2}|2[0-4]d|25[0-5])
    • .
    • ){3}
    • (d?d|1d{2}|2[0-4]d|25[0-5])
    • /x
    255.255.255.255
  • IP cím ellenőrzése
    • /
    • (
    • ( d{1,2} |1d{2}|2[0-4]d|25[0-5])
    • .
    • ){3}
    • (d{1,2}|1d{2}|2[0-4]d|25[0-5])
    • /x
    255.255.255.255
  • IP cím ellenőrzése
    • /
    • (
    • ( d{1,2}|1d{2} |2[0-4]d|25[0-5])
    • .
    • ){3}
    • (d{1,2}|1d{2}|2[0-4]d|25[0-5])
    • /x
    255.255.255.255
  • IP cím ellenőrzése
    • /
    • (
    • ( 1?d{1,2} |2[0-4]d|25[0-5])
    • .
    • ){3}
    • (1?d{1,2}|2[0-4]d|25[0-5])
    • /x
    255.255.255.255
  • IP cím ellenőrzése
    • /
    • (
    • (1?d{1,2}|2[0-4]d|25[0-5])
    • .
    • ){3}
    • (1?d{1,2}|2[0-4]d|25[0-5])
    • /x
    255.255.255.255
  • URL keresése
  • URL keresése
    • /
    • (?:[a-z]+://)?
    • (?:S+?(:S+)?@)?
    • (?:
    • (?:(?:25[0-5]|2[0-4]d|[01]?dd?).){3}(?:25[0-5]|2[0-4]d|[01]?dd?)
    • |
    • (?:
    • (?:[a-z0-9][a-z0-9-]*[a-z0-9].)+
    • (?:[a-z]{2,6})
    • )
    • )
    • (?::(?:[1-9]|[1-5]?d{2,4}|6[0-4]d{3}|65[0-4]d{2}|655[0-5]d|6556[0-5]))?
    • (?:
    • (?:/|?)
    • .*?
    • )?
    • (?=s|<|$)
    • /ix
  • URL keresése
    • /
    • #protokol
    • (?:[a-z]+://)?
    • #felhasznalo nev es opcionalis jelszo
    • (?:S+?(:S+)?@)?
    • (?:
    • #IP cim
    • (?:(?:25[0-5]|2[0-4]d|[01]?dd?).){3}(?:25[0-5]|2[0-4]d|[01]?dd?)
    • |
    • #vagy domain
    • (?:
    • (?:[a-z0-9][a-z0-9-]*[a-z0-9].)+
    • #TLD
    • (?:[a-z]{2,6})
    • )
    • )
    • #port
    • (?::(?:[1-9]|[1-5]?d{2,4}|6[0-4]d{3}|65[0-4]d{2}|655[0-5]d|6556[0-5]))?
    • #path es query string
    • (?:
    • (?:/|?)
    • .*?
    • )?
    • (?=s|$)
    • /i x
  • Target nélküli linkek
    • Megkeresni az összes olyan <a> elemet egy HTML-ben, amely <a> elemeknek nincsen target attribútuma meghatározva.
  • Target nélküli linkek
    • /
    • <a
    • (?:
    • s+
    • [a-z]+(?<!target)
    • (?:s*=s*('|&quot;) . *?1)?
    • )+
    • >
    • /i s x
  • A spanyol viasz
    • Van jónéhány dolog, amire egyszerűen nem érdemes és nem is lehet használni a regexp-et, ezért nem is érdemes!
    • HTML validálás és feldolgozás – DOM kiterjesztés PHP alatt
    • Form input-ok validálása – PHP Data Filtering
    • Dátum validálás – strtotime()
    • Amikor egy egyszerű szöveget keresünk – strpos(), str_replace()
  • Kérdés?
  • Köszönöm a figyelmet!