index

Začátečník na Internetu
Lekce 12: Regulární výrazy v systému ARCHIE


V minulé lekci jsme se seznámili se systémem ARCHIE. Jeho používání v pavučinovém prostředí jsme demonstrovali prací se serverem ArchiePlex západočeké univerzity v Plzni:

http://www.zcu.cz/services/archieplexform.html

Slíbili jsme si, že se v dnešní lekci podrobněji seznámíme s typem prohledávání systému ARCHIE založeným na regulárních výrazech - Regular Expression Match. Rovněž jsme si řekli, že se pokusíme nalézt nějaký šikovný lokální klient ARCHIE pro náš osobní počítač vybavený WINDOWS 95.

Při volbě Regular Expression Match uvádíme v poli "Search for:" vyhledávací požadavek ve formě regulárního výrazu. Ten lze vytvářet spojováním jednoznakových nebo víceznakových elementů. Jeho vyhodnocením získáváme řetězec - vzor, který porovnáváme s údaji v databázi serveru systému ARCHIE. Regulární výrazy nám poskytují nástroj, jak podrobněji specifikovat náš požadavek, než nám dovolují ostatní typy vyhledávání.

1. Elementy regulárních výrazů

Základním elementem je znak c, který není tzv. speciálním znakem, např. není znakem tečka ("."), hvězdička ("*"), obráceným lomítkem ("\") a pod. V regulárním výrazu představuje znak c sama sebe. Např. máme­li elementy P, r, a, h, a, tak jejich spojením dostaneme regulární výraz Praha , jehož hodnotou je řetězec Praha. Jím jako vzorem můžeme porovnávat údaje v databázi. Výsledek v tomto případě je identický, jako kdybychom použili typ vyhledávání Case Sensitive Substring Match s týmž řetězcem.

Speciální význam má znak tečka (".") Jako element regulárního výrazu představuje libovolný znak kromě znaku nový řádek (New Line). Tak např. regulární výraz Prah. přestavuje řetezec Prah ukončený libovolným znakem kromě znaku nový řádek. Při porovnání nastává shoda se vzorem u údajů např. Praha, Prahy, Prahu, Praho a pod.

Zvláštním elementem je znak hvězdička ("*"). Znamená, že předcházející element regulárního výrazu se libovolněkrát opakuje, včetně případu, že se neopakuje vůbec. Libovolné opakování libovolného znaku tedy vyjádříme regulárním výrazem .* ( např. libovolné opakování znaku a výrazem a* ). V této souvislosti se implicitně předpokládá, že regulární výraz např. Praha je totožný s výrazem

.*Praha.*

tedy, že mu může předcházet nebo ho může ukončovat libovolný řetězec znaků, včetně prázdného řetězce.

Přemýšlivého čtenáře asi napadne, jak by se v regulárním výraze vyjádřil speciální symbol tak, aby představoval sám sebe, např. znak hvězdička hodnotu hvězdička. Toho lze dosáhnout předřazením speciálního znaku obráceným lomítkem ("\"). V takovém případě regulární výraz

\.\*\\

má hodnotu .*\, protože obrácené lomítko předchází postupně speciální znaky tečka, hvězdička a obrácené lomítko.

Výskyt určitých znaků na daném místě lze specifikovat elementárním výrazem [abcdef]. Mezi hranaté závorky umístíme znaky, které se na uvažované pozici mohou nacházet. Např. chceme­li specifikovat vzor Praha nezávisle na velikosti písmen, požijeme regulární výraz

P[rR][aA][hH][aA],

který povoluje výskyt malých i velkých písmen na druhé až páté pozici vzoru. Na prvé je samozřejmě povolen pouze výskyt velkého písmene. Konstrukce a­z či A­Z uvnitř tohoto elemntárního výrazu jsou zkrácené zápisy písmen az z abecedy malých písmen, AZ z abecedy velkých písmen. Konstrukce 0-9 je zkráceným zápisem cifer 0 9. V souladu s těmito zápisy regulárnímu výrazu Label[0-9] vyhovují údaje Label0, Label1,..., Label9. Umístíme­li ihned za prvou otevírací hranatou závorku znak šipka nahoru ("^"), má element [^abcdef] hodnotu libovolného znaku mimo znaky a,b,c,d,e,f.

Speciální znak šipka nahoru ("^") jako nejlevější znak v regulárním výraze určuje, že vzor se uplatňuje na levém okraji porovnávaného údaje. Analogicky speciální znak dolar ("$") na nejpravějším místě regulárního výrazu určuje, že vzor se uplatňuje na pravém okraji porovnávaného údaje. Tudíž vzoru určeném regulárním výrazem ^abcd vyhovuje údaj abcdef, ale nikoliv údaj 123abcdef. Podobně vzoru určeném výrazem a\*$ vyhovuje údaj bcda* ale nikoliv údaj bcda*ef.

2. Příklady použití regulárních výrazů

Jako prvý příklad doporučuji čtenářům vyhledat dokumenty RFC, které mají tvar hypertextového dokumentu. Já bych pro řešení volil server ArchiePlex s typem výběru Regular Expression Match a pro vyhledání požadovaných dokumentů regulární výraz

[Rr][Ff][Cc][0-9].*\.[Hh][Tt][Mm].*

Prvá část specifikuje jako počátek jména souborů řetěz RFC a to bez ohledu na velikost písmen. Pak se požaduje jedna libovolná cifra. Jméno souboru po této cifře může obsahovat libovolný řetězec ukončený tečkou. Jako přípona je po znaku tečka povolen řetěz htm s možným dalším libovolným ukončením (např. html). Na velikosti písmen nezáleží.

Na serverech se službou anonymního FTP často najdeme návody na práci se systémem ARCHIE. Pokusme se je najít jako druhý příklad. Můžeme předpokládat, že návody budou archivovány pravděpodobně se jmény, ve kterých bude uváděn řetezec ARCHIE a řetězec HELP. A to jistě v tomto pořadí. Tento předpoklad se promítne do příslušného regulárního výrazu takto:

[Aa][Rr][Cc][Hh][Ii].*[Hh][Ee][Ll][Pp].*

Ve výraze počítámě s možnými libovolnými řetězci mezi ArchieHelp, a samozřejmě i na konci vzoru. Pokud ve výsledku narazíte na soubory s příponami nebo gz , nezalekněte se jich, jde o unixové soubory speciálně komprimované. Zatím s nimi neumíte pracovat, proto je, na rozdíl od souborů s příponou txt, ignorujte.

3. Klient Archie pro Windows 95

Na stránce WWW Davida Woakese, která je na URL

http://ds.dial.pipex.com/d.woakes/

nalezneme informace o programu wsarch32.exe :

Tento program je vhodným klientem systému ARCHIE nejen pro Windows 95, ale i Windows NT. Na stránce je rovněž odkaz na jeho archivaci ve formě souboru wsarch32.zip. Pro snažší přístup čtenářů k tomuto souboru je na URL

http://omicron.felk.cvut.cz/html/softnov/programy/wsarch32.zip

nebo

ftp://omicron.felk.cvut.cz/info/html/softnov/programy/wsarch32.zip

udržována kopie. Kdo by chtěl, může se pokusit nalézt jinou kopii tohoto souboru třeba pomocí systému Archie, v naší doméně pak pomocí libereckého Čmuchala. Pro orientaci uvádím auktuální verzi tohoto programu. Je z 29.9.1996.

Soubor wsarch32.zip obsahuje stejnojmenné soubory s příponami exe, hlp a txt. Před instalací doporučuji prostudovat si wsarch32.txt, který nás poučí nejen o funkcích programu, ale i o podmínkách jeho využívání. Klient wsarch32.exe po vyhledání požadovaných souborů může pomocí funkce File/Retrive spustit program ws_ftp95.exe (doporučovali jsme ho v lekci 9) a označený soubor z archivu překopírovat na osobní počítač uživatele do specifikovaného adresáře. Pro tento účel je třeba správně nastavit Option/FTP_Setup. Na následujícím obrázku uvidíme jedno z možných nastavení.

V řádce Command je nastavena cesta a jméno programu, v našem případě

C:\Program Files\WS_FTP\WS_FTP95.exe

v řádce Parameters je pak důležitá ta část parametrů, která nastavuje lokální adresář, do kterého se zkopírovaný soubor, označený parametrem %f, uloží. V našem případě jde o část

local: c:\archiv\%f

Nesmíme ani zapomenout do řádku Passsword uvést naši adresu elektronické pošty. Program poskytuje prostřednictvím menu Help srozumitelný a dostatečně podrobný anglický návod pro práci s programem. Při vyhledávání specifikujeme nejdříve typ vzhledávání, pak v rubrice Search for specifikujeme náš vyhledávací požadavek a činnost programu odstartujeme klávesou Search. Jeho činnost můžeme mimořádně ukončit klávesou Abort. Upozorněme ještě, že prostřednictvím menu Advanced můžeme např. zúžit vyhledávání na určenou doménu nebo dokonce zúžit cesty na serverech anonymního FTP. Ve výsledcích vyhledání zaktivujeme soubor, který chceme zkopírovat, např. kliknutím myší a prostřednictvím File/Retrieve spustíme FTP s příslušnými parametry. Protože wsarch32.exe nesignalizuje zahájení, průběh a ukončení eventuálního přenosu souboru, je vhodné sledovat ho v okně spuštěného programu WS_FTP95.exe.

Touto lekcí ukončíme prozatím seznamování s problematikou přenosu souborů a od příště se začneme zabývat službami, založenými na využívání protokolu Telnet.