8.dubna 2005

PC a internet Regulární výrazy

Nedávno jsem byl v Praze na školení ohledně regulárních výrazů. Školení nebylo špatné, jen mě se zdálo trošku zbytečně dlouhé. Kdybychom končili kolem poledne, bylo by to akorát. Každopádně mi tu zbylo pár poznámek, které si nejlépe uložím tak, že si je zapíšu sem.

Ing. Jan Vrbata - REGULÁRNÍ VÝRAZY

Standardy pro regulární výrazy: (dva různé, ale hodně podobné)

  • POSIX 1003.2 (mezinárodní norma)
  • PCRE (odvozenina)

POZN:Podle mě je pak hlavně spousta nestandardů, které používají různé jazyky. Ale základ je asi opravdu vždy stejný.

www.pcre.org - knihovna PCRE z Perlu, kterou lze imlementovat do vlastních programů

Literatura:

Operátory, metaznaky a kvantifikátory

  • Pro nelafanumerické znaky (přeba ?), které mají předřazené , stává se z něj obyčejný alfanumerický znak. Tj. ?=speciální znak, ?= otazník
  • Zřetěžení (posloupnost znaků): abc=abc
  • Tečka "." reprezentuje libovolný 1 znak
  • [ ] reprezentují výčtovou množinu, tj. odpovídá jednomu znaku uvedenému v závorkách.
    • lze používat intervaly (např 0-9, a-z, d-r, ...) Např pro písmeno [a-zA-Z]
    • negace: znak stříšky "^" např [^0-9] stříška musí být vždy na začátku, jinak je brána jako obyčejný znak
    • kategorie (stangard POSIX): (nutno použít pouze uvnitř hranatých závorek - tj. dvojitý hranatý závorky)
      • [:digit:] - číslice
      • [:alnum:] - alfanumerický znak
    • .kategorie (standard PCRE):
      • d - číslice
      • w - alfanumerický znak
      • D - jedna nečíslice
      • W - jeden nealfanumerický znak
  • operátor | - označuje nebo. Vybírá věci v závorce. Např: (slovo1|slovo2)
  • metaznak ^ reprezentuje začátek řetězce a $ konec řetězce
  • kvantifikátor * reprezentuje 0 a více výskytů daného znaku nebo závorky, který kvantifikátoru bezprostředně předcházel
    • tento kvantifikátor je tzv. žravý a snaží se pojmou co nejvíc znaků
    • dáme-li za kvantifikátor ?, potlačíme její žravost a vybere co možná nejmenší počet znaků (takzvaně LEISI-líný)
  • kvantifikátor + reprezentuje totéž jako hvězdička, ale reprezentuje 1 a více výskytů
  • kvantifikátor ? reprezentuje 0 nebo 1 výskyt daného znaku nebo závorky, který kvantifikátoru bezprostředně předcházel
  • kvantifikátor {n} reprezentují n-opakování
    • varianta {min,max} reprezentuje interval opakování. Lze potom psát i {min,} (nebo {,max} - tato implementace nám nějak nefunguje, ale měla by)
  • operátor  reprezentuje začátek a konec slova (v POSIXu [[:<:]] a [[:>:]])
  • operátor 1 2 ... označují obsah 1., 2. ... závorky ve výrazu. Čísla se počítají vždy podle levé závorky. Tedy ((a)(b)) potom zanmená 1=ab, 2=a 3=b
  • chceme-li zapamatování nějaké závorky eliminovat, potom se píše (?: a tato závorka nebude zapamatována
  • operátor w reprezentuje písmena ve slovu (znaky a čísla)
  • metaznak (?=xxxxxx) reprezentuje výhled dopředu = nastaví kurzor na slovo xxxxxxx, ale neporovnává hos ničím. (Např: d+(?= kč) vrátí mnočinu číslic, které předchází slovu "kč"
  • (?!=xxxxxx) totéž, ale negace. Např: d+(?! kč) vrátí všechny čísla, za nimiž není Kč. Nebo (?!000)ddd vrátí třímístné číslo mimo 000
  • metaznak (?<=xxxxx) a (?<!xxxxxx) je totéž ale né dopředu, ale zpět.

Hledáte-li správce sítě nebo prostě nekoho kdo umí spravovat servery, hledejte na www.petr-hladis.cz

Přečteno: 4653x | Komentářů: 1x | Kategorie: PC a internet

Komentáře čtenářů

1. GRAVATAR - 81.201.60.14515. 10. 2012 9:09:00

Přidat vlastní komentář k článku



Z důvovů ochrany proti spamu prosím do následujícího políčka napište texy "NOSPAM":

Chcete-li ke komentáři přidat svou fotku nebo jinou ikonku, postupujte podle návodu.


TOPlist

[CNW:Counter]