Your SlideShare is downloading. ×
Reguláris Kifejezések Alapjai
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Saving this for later?

Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime - even offline.

Text the download link to your phone

Standard text messaging rates apply

Reguláris Kifejezések Alapjai

774
views

Published on

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

Published in: Technology, Health & Medicine

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
774
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
3
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. A reguláris kifejezések alapjai A programozás fekete mágiája
  • 2. 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.
  • 3. 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!
  • 4. Alapok
  • 5. (?: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$-
  • 6. 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
  • 7. Meta karakterek • ^ $ . [ ] | ( ) ? * + { } •Ha ezekre a karakterekre illeszkedni akarunk, akkor escape-eljük őket: “”, “$”
  • 8. 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
  • 9. 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
  • 10. 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/
  • 11. 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/
  • 12. 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
  • 13. Ismétlők • Klasszikus mohók: ?, *, + • Specifikusak: {1}, {1,}, {1,5} • ? == {0,1} • * == {0,} • + == {1,} • Nem mohók (lusták): ??, *?, +?, {5,7}?
  • 14. 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/
  • 15. 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/
  • 16. 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/
  • 17. 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/
  • 18. Alternatívok a|b “a” vagy “b” foo|bar “foo” vagy “bar” foo|bar|baz “foo”, “bar” vagy “baz” 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.
  • 19. 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”
  • 20. Csoportosítás (d+(.d+)) $1 $2
  • 21. 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.
  • 22. 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.
  • 23. Csoportosítás (?P<name>) Nevesített hivatkozások a csoportokban (?=name) Nevesített csoportra hivatkozás
  • 24. Előre-/hátratekintés • Null szélességű csoportok pozitív negatív előre (?=...) (?!...) hátra (?<=...) (?<!...)
  • 25. Példa /.*?@twistedtribe/ /.*?(?=@twitedtribe)/ adam.brunner@twistedtribe.com adam.brunner@twistedtribe.com
  • 26. Feltételek (?(feltetel)igaz-minta|hamis-minta) vagy (?(feltetel)igaz-minta)
  • 27. Példa /(<)?[a-z]+(?(1)>)/ /^(?(?=b)bar|f)/ <tag> <foo <bar attr=“”> foo bar baz
  • 28. Példák nem feltétlenül életszerűek
  • 29. IP cím ellenőrzése
  • 30. IP cím ellenőrzése /d{1,3}.d{1,3}.d{1,3}.d{1,3}/ 999.999.999.999
  • 31. IP cím ellenőrzése /(d{1,3}.){3}d{1,3}/ 999.999.999.999
  • 32. IP cím ellenőrzése 0-9 10-99 100-199 200-249 250-255
  • 33. IP cím ellenőrzése d 10-99 100-199 200-249 250-255
  • 34. IP cím ellenőrzése d d{2} 100-199 200-249 250-255
  • 35. IP cím ellenőrzése d d{2} 1d{2} 200-249 250-255
  • 36. IP cím ellenőrzése d d{2} 1d{2} 2[0-4]d 250-255
  • 37. IP cím ellenőrzése d d{2} 1d{2} 2[0-4]d 25[0-5]
  • 38. 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
  • 39. 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
  • 40. 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
  • 41. 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
  • 42. 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
  • 43. 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
  • 44. 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
  • 45. URL keresése
  • 46. 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
  • 47. 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|$) /ix
  • 48. Target nélküli linkek •Megkeresni az összes olyan <a> elemet egy HTML- ben, amely <a> elemeknek nincsen target attribútuma meghatározva.
  • 49. Target nélküli linkek / <a (?: s+ [a-z]+(?<!target) (?:s*=s*('|").*?1)? )+ > /isx
  • 50. 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()
  • 51. Kérdés?
  • 52. Köszönöm a figyelmet!