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

808

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

×