Your SlideShare is downloading. ×
0
Reguláris Kifejezések Alapjai
Reguláris Kifejezések Alapjai
Reguláris Kifejezések Alapjai
Reguláris Kifejezések Alapjai
Reguláris Kifejezések Alapjai
Reguláris Kifejezések Alapjai
Reguláris Kifejezések Alapjai
Reguláris Kifejezések Alapjai
Reguláris Kifejezések Alapjai
Reguláris Kifejezések Alapjai
Reguláris Kifejezések Alapjai
Reguláris Kifejezések Alapjai
Reguláris Kifejezések Alapjai
Reguláris Kifejezések Alapjai
Reguláris Kifejezések Alapjai
Reguláris Kifejezések Alapjai
Reguláris Kifejezések Alapjai
Reguláris Kifejezések Alapjai
Reguláris Kifejezések Alapjai
Reguláris Kifejezések Alapjai
Reguláris Kifejezések Alapjai
Reguláris Kifejezések Alapjai
Reguláris Kifejezések Alapjai
Reguláris Kifejezések Alapjai
Reguláris Kifejezések Alapjai
Reguláris Kifejezések Alapjai
Reguláris Kifejezések Alapjai
Reguláris Kifejezések Alapjai
Reguláris Kifejezések Alapjai
Reguláris Kifejezések Alapjai
Reguláris Kifejezések Alapjai
Reguláris Kifejezések Alapjai
Reguláris Kifejezések Alapjai
Reguláris Kifejezések Alapjai
Reguláris Kifejezések Alapjai
Reguláris Kifejezések Alapjai
Reguláris Kifejezések Alapjai
Reguláris Kifejezések Alapjai
Reguláris Kifejezések Alapjai
Reguláris Kifejezések Alapjai
Reguláris Kifejezések Alapjai
Reguláris Kifejezések Alapjai
Reguláris Kifejezések Alapjai
Reguláris Kifejezések Alapjai
Reguláris Kifejezések Alapjai
Reguláris Kifejezések Alapjai
Reguláris Kifejezések Alapjai
Reguláris Kifejezések Alapjai
Reguláris Kifejezések Alapjai
Reguláris Kifejezések Alapjai
Reguláris Kifejezések Alapjai
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

827

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
827
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!

×