09.09.2014 Views

Programování v C# - Soubory a regulární výrazy - eAMOS

Programování v C# - Soubory a regulární výrazy - eAMOS

Programování v C# - Soubory a regulární výrazy - eAMOS

SHOW MORE
SHOW LESS

Transform your PDFs into Flipbooks and boost your revenue!

Leverage SEO-optimized Flipbooks, powerful backlinks, and multimedia content to professionally showcase your products and significantly increase your reach.

Úvod Informace o prostředí Práce se soubory Regulární <strong>výrazy</strong> Konec<br />

<strong>Programování</strong> v <strong>C#</strong><br />

<strong>Soubory</strong> a <strong>regulární</strong> <strong>výrazy</strong><br />

Petr Vaněček<br />

1 / 27


Úvod Informace o prostředí Práce se soubory Regulární <strong>výrazy</strong> Konec<br />

Obsah přednášky<br />

◮ Informace o prostředí<br />

◮ Práce se soubory<br />

◮ Regulární <strong>výrazy</strong><br />

2 / 27


Úvod Informace o prostředí Práce se soubory Regulární <strong>výrazy</strong> Konec<br />

Zprostředkování informací<br />

◮ Třída System.Environment<br />

◮ Poskytuje info o systému, procesu, uživateli, . . .<br />

3 / 27


Úvod Informace o prostředí Práce se soubory Regulární <strong>výrazy</strong> Konec<br />

Systém a verze<br />

◮ OSVersion<br />

◮ informace o platformě a verzi<br />

◮ Version<br />

◮ verze runtimu<br />

◮ UserName<br />

◮ uživatelské jméno vlastníka procesu<br />

◮ UserDomainName<br />

◮ název domény<br />

◮ MachineName<br />

◮ název počítače<br />

4 / 27


Úvod Informace o prostředí Práce se soubory Regulární <strong>výrazy</strong> Konec<br />

Cesty<br />

◮ CurrentDirectory<br />

◮ aktuální adresář<br />

◮ SystemDirectory<br />

◮ systémový adresář (většino c:/windows/system32)<br />

◮ GetFolderPath(SpecialFolder)<br />

◮ cesty ke speciálním adresářům<br />

◮ ApplicationData – data aplikací<br />

◮ Desktop – plocha<br />

◮ MyMusic – hudba<br />

◮ StartMenu – nabídka start<br />

◮ . . .<br />

◮ GetCommandLineArgs<br />

◮ parametry příkazové řádky včetně jména souboru<br />

5 / 27


Úvod Informace o prostředí Práce se soubory Regulární <strong>výrazy</strong> Konec<br />

Proudy<br />

◮ V .NET všechny I/O operace řešeny pomocí proudů<br />

◮ Třída System.IO.Stream<br />

◮ abstraktní pohled na množinu bytů<br />

◮ soubor<br />

◮ paměť<br />

◮ TCP/IP<br />

◮ . . .<br />

◮ společné metody<br />

◮ Read<br />

◮ Write<br />

◮ u některých proudu navíc náhodný přístup<br />

◮ metoda Seek<br />

◮ vlastnost Position<br />

6 / 27


Úvod Informace o prostředí Práce se soubory Regulární <strong>výrazy</strong> Konec<br />

Třída FileStream<br />

◮ Pro práci se soubory<br />

◮ Otevření souboru probíhá v konstruktoru<br />

◮ FileStream soubor = new FileStream(string, FileMode);<br />

◮ FileMode určuje způsob otevření<br />

◮ Create – vytvoří či přepíše soubor<br />

◮ Append – otevře existující soubor a zapisuje na jeho konec nebo vytvoří<br />

nový soubor<br />

◮ Open – otevře existující soubor<br />

◮ Při zápisu se využívá buffer<br />

◮<br />

nutno korektně uzavřít soubor<br />

◮ Close<br />

7 / 27


Úvod Informace o prostředí Práce se soubory Regulární <strong>výrazy</strong> Konec<br />

Příklad použití třídyFileStream<br />

FileStream fs = null ;<br />

try<br />

{<br />

fs = new FileStream (" prvni ",FileMode . Create );<br />

byte [] s = new byte []{( byte )’p ’};<br />

fs. Write (s ,0 ,1);<br />

}<br />

finally<br />

{<br />

fs. Close ();<br />

}<br />

nebo<br />

using (fs = new FileStream (" prvni ",FileMode . Create ))<br />

{<br />

byte [] s = new byte []{( byte )’p ’};<br />

fs. Write (s ,0 ,1);<br />

}<br />

8 / 27


Úvod Informace o prostředí Práce se soubory Regulární <strong>výrazy</strong> Konec<br />

Třídy BinaryWriter/Reader<br />

◮ Práce s binárními daty<br />

◮ Konstruktory<br />

◮ BinaryReader/Writer(Stream, Encoding)<br />

◮ možnost nastavit použité kódování<br />

◮ Implementují metody pro práci se základními typy<br />

◮ ... Read...()<br />

◮ načte z proudu hodnotu<br />

◮ byte ReadByte()<br />

◮ void Write()<br />

◮<br />

zapíše do proudu data<br />

9 / 27


Úvod Informace o prostředí Práce se soubory Regulární <strong>výrazy</strong> Konec<br />

Třídy TextReader/Writer<br />

◮ Práce s textem<br />

◮ Odděděné třídy<br />

◮ StringReader/Writer<br />

◮ čtení/zápis do řetězce<br />

◮ StreamReader/Writer<br />

◮ čtení/zápis do proudu<br />

◮ Konstruktory<br />

◮ StreamReader/Writer(string/Stream, Encoding)<br />

◮ Metody Read/WriteLine<br />

10 / 27


Úvod Informace o prostředí Práce se soubory Regulární <strong>výrazy</strong> Konec<br />

Příklad použití tříd StreamReader/Writer<br />

using ( StreamWriter soubor = new StreamWriter (" pokus ",<br />

false , Encoding . UTF8 ))<br />

{<br />

soubor . WriteLine (" můžeme ␣ psát ␣ česky ");<br />

}<br />

using ( StreamReader soubor = new StreamReader (" pokus ",<br />

Encoding . UTF8 ))<br />

{<br />

string retezec = soubor . ReadLine ();<br />

Console . WriteLine ( retezec );<br />

}<br />

11 / 27


Úvod Informace o prostředí Práce se soubory Regulární <strong>výrazy</strong> Konec<br />

Třídy File a FileInfo<br />

◮ Obsahují metody pro práci se soubory<br />

◮ otevírání, kopírování, mazání, . . .<br />

◮ Třída File obsahuje statické metody<br />

◮ Třída FileInfo obsahuje instanční metody<br />

◮ vyplatí se při více operacích nad jedním souborem – nedochází k<br />

opakované kontrole práv<br />

◮ Diskové operace<br />

◮ metoda MoveTo – přesun souboru<br />

◮ metoda CopyTo – kopírování<br />

◮ metoda Delete – mazání<br />

◮ Zjišťování a nastavování přístupu<br />

◮ vlastnost LastAccessTime – poslední přístup<br />

◮ vlastnost Attributes – atributy<br />

12 / 27


Úvod Informace o prostředí Práce se soubory Regulární <strong>výrazy</strong> Konec<br />

Třídy File a FileInfo v .NET 2<br />

◮ Zjednodušení práce se soubory<br />

◮ Načtení a zápis celého souboru pomocí jedné metody<br />

◮<br />

◮<br />

◮<br />

string ReadAllText<br />

string[] ReadAllLines<br />

WriteAllText(string)<br />

◮ WrtieAllLines(string[])<br />

13 / 27


Úvod Informace o prostředí Práce se soubory Regulární <strong>výrazy</strong> Konec<br />

Třídy Directory a DirectoryInfo<br />

◮ Dvě verze podobně jako u souborů<br />

◮ Umožňují operace s adresáři<br />

◮<br />

◮<br />

Delete<br />

Move<br />

◮ Zjištění obsahu adresáře<br />

◮ GetDirectories<br />

◮ GetFiles<br />

◮ Zjišťování a nastavování přístupu<br />

◮ Změna aktuálního adresáře<br />

◮ SetCurrentDirectory<br />

14 / 27


Úvod Informace o prostředí Práce se soubory Regulární <strong>výrazy</strong> Konec<br />

Práce s cestami<br />

◮ Třída Path<br />

◮ Pracuje pouze s řetězcem<br />

◮ Umožňuje získávat a měnit části cesty<br />

◮ GetExtension – vrátí příponu<br />

◮ ChangeExtension – vrátí cestu se změněnou příponou<br />

◮ HasExtension – rozhodne zda cesta obsahuje i příponu<br />

◮ GetFileName – jméno souboru<br />

◮ GetDirectoryName – jméno adresáře<br />

◮ . . .<br />

15 / 27


Úvod Informace o prostředí Práce se soubory Regulární <strong>výrazy</strong> Konec<br />

Příklad<br />

string soubor = Environment . GetCommandLineArgs ()[0];<br />

soubor = Path . ChangeExtension ( soubor ,".cs");<br />

if( File . Exists ( soubor )) {<br />

string [] radky = File . ReadAllLines ( soubor );<br />

foreach ( string radka in radky ) {<br />

Console . WriteLine ( radka );<br />

}<br />

}<br />

16 / 27


Úvod Informace o prostředí Práce se soubory Regulární <strong>výrazy</strong> Konec<br />

Hlídání souborů<br />

◮ Třída FileSystemWatcher<br />

◮ sleduje změny v nastaveném adresáři<br />

◮ Vyvolává události<br />

◮ Changed – změna<br />

◮ Created – vytvoření<br />

◮ Deleted – smazání<br />

◮ Renamed – přejmenování<br />

◮ Pomocí vlastností Filter a NotifyFilter možno nastavit jaké<br />

události a které soubory se mají sledovat<br />

17 / 27


Úvod Informace o prostředí Práce se soubory Regulární <strong>výrazy</strong> Konec<br />

Hlídání souborů – příklad<br />

public static void Main ( string [] Args ) {<br />

string cesta = Environment . GetCommandLineArgs ()[0];<br />

cesta = Path . GetDirectoryName ( cesta );<br />

FileSystemWatcher hlidac = new FileSystemWatcher ( cesta );<br />

hlidac . Created += new FileSystemEventHandler ( Vytvoreni );<br />

hlidac . EnableRaisingEvents = true ;<br />

}<br />

Console . WriteLine (" Tady ␣ hlidam ␣ja");<br />

Console . ReadKey ();<br />

private static void Vytvoreni ( object source ,<br />

FileSystemEventArgs e)<br />

{<br />

Console . WriteLine (" Vytvoril ␣se:␣" + e. FullPath );<br />

}<br />

18 / 27


Úvod Informace o prostředí Práce se soubory Regulární <strong>výrazy</strong> Konec<br />

Co jsou vlastně zač?<br />

◮ Co jsou <strong>regulární</strong> <strong>výrazy</strong>?<br />

19 / 27


Úvod Informace o prostředí Práce se soubory Regulární <strong>výrazy</strong> Konec<br />

Co jsou vlastně zač?<br />

◮ Co jsou <strong>regulární</strong> <strong>výrazy</strong>?<br />

◮ univerzální pomocník při práci s textem<br />

◮ vyhledávání<br />

◮ rozdělování<br />

◮ nahrazování<br />

19 / 27


Úvod Informace o prostředí Práce se soubory Regulární <strong>výrazy</strong> Konec<br />

Co jsou vlastně zač?<br />

◮ Co jsou <strong>regulární</strong> <strong>výrazy</strong>?<br />

◮ univerzální pomocník při práci s textem<br />

◮ vyhledávání<br />

◮ rozdělování<br />

◮ nahrazování<br />

◮ Jak to vypadá?<br />

19 / 27


Úvod Informace o prostředí Práce se soubory Regulární <strong>výrazy</strong> Konec<br />

Co jsou vlastně zač?<br />

◮ Co jsou <strong>regulární</strong> <strong>výrazy</strong>?<br />

◮ univerzální pomocník při práci s textem<br />

◮ vyhledávání<br />

◮ rozdělování<br />

◮ nahrazování<br />

◮ Jak to vypadá?<br />

◮ kombinace normálních a řídících znaků, které definují vzor (pattern)<br />

19 / 27


Úvod Informace o prostředí Práce se soubory Regulární <strong>výrazy</strong> Konec<br />

Co jsou vlastně zač?<br />

◮ Co jsou <strong>regulární</strong> <strong>výrazy</strong>?<br />

◮ univerzální pomocník při práci s textem<br />

◮ vyhledávání<br />

◮ rozdělování<br />

◮ nahrazování<br />

◮ Jak to vypadá?<br />

◮ kombinace normálních a řídících znaků, které definují vzor (pattern)<br />

◮ A v praxi?<br />

19 / 27


Úvod Informace o prostředí Práce se soubory Regulární <strong>výrazy</strong> Konec<br />

Co jsou vlastně zač?<br />

◮ Co jsou <strong>regulární</strong> <strong>výrazy</strong>?<br />

◮ univerzální pomocník při práci s textem<br />

◮ vyhledávání<br />

◮ rozdělování<br />

◮ nahrazování<br />

◮ Jak to vypadá?<br />

◮ kombinace normálních a řídících znaků, které definují vzor (pattern)<br />

◮ A v praxi?<br />

◮ např.<br />

◮ e – vyhledá písmeno ”e”<br />

◮ eva – vyhledá řetězec ”eva”<br />

19 / 27


Úvod Informace o prostředí Práce se soubory Regulární <strong>výrazy</strong> Konec<br />

Více znaků<br />

◮ Libovolný znak<br />

20 / 27


Úvod Informace o prostředí Práce se soubory Regulární <strong>výrazy</strong> Konec<br />

Více znaků<br />

◮ Libovolný znak<br />

◮ e.a – eva, ema, esa, . . .<br />

20 / 27


Úvod Informace o prostředí Práce se soubory Regulární <strong>výrazy</strong> Konec<br />

Více znaků<br />

◮ Libovolný znak<br />

◮ e.a – eva, ema, esa, . . .<br />

◮ Množina znaků<br />

20 / 27


Úvod Informace o prostředí Práce se soubory Regulární <strong>výrazy</strong> Konec<br />

Více znaků<br />

◮ Libovolný znak<br />

◮ e.a – eva, ema, esa, . . .<br />

◮ Množina znaků<br />

◮ e[vm]a – eva,ema<br />

◮ e[^m]a – eva, esa, eta, (ne ema)<br />

20 / 27


Úvod Informace o prostředí Práce se soubory Regulární <strong>výrazy</strong> Konec<br />

Více znaků<br />

◮ Libovolný znak<br />

◮ e.a – eva, ema, esa, . . .<br />

◮ Množina znaků<br />

◮ e[vm]a – eva,ema<br />

◮ e[^m]a – eva, esa, eta, (ne ema)<br />

◮ Speciální znaky<br />

20 / 27


Úvod Informace o prostředí Práce se soubory Regulární <strong>výrazy</strong> Konec<br />

Více znaků<br />

◮ Libovolný znak<br />

◮ e.a – eva, ema, esa, . . .<br />

◮ Množina znaků<br />

◮ e[vm]a – eva,ema<br />

◮ e[^m]a – eva, esa, eta, (ne ema)<br />

◮ Speciální znaky<br />

◮ \w – alfanumerický znak<br />

◮ \d – číslo<br />

◮ \s – bílý znak (mezera, tabulátor, . . . )<br />

20 / 27


Úvod Informace o prostředí Práce se soubory Regulární <strong>výrazy</strong> Konec<br />

Více znaků<br />

◮ Libovolný znak<br />

◮ e.a – eva, ema, esa, . . .<br />

◮ Množina znaků<br />

◮ e[vm]a – eva,ema<br />

◮ e[^m]a – eva, esa, eta, (ne ema)<br />

◮ Speciální znaky<br />

◮ \w – alfanumerický znak<br />

◮ \d – číslo<br />

◮ \s – bílý znak (mezera, tabulátor, . . . )<br />

◮ A tečka?<br />

20 / 27


Úvod Informace o prostředí Práce se soubory Regulární <strong>výrazy</strong> Konec<br />

Více znaků<br />

◮ Libovolný znak<br />

◮ e.a – eva, ema, esa, . . .<br />

◮ Množina znaků<br />

◮ e[vm]a – eva,ema<br />

◮ e[^m]a – eva, esa, eta, (ne ema)<br />

◮ Speciální znaky<br />

◮ \w – alfanumerický znak<br />

◮ \d – číslo<br />

◮ \s – bílý znak (mezera, tabulátor, . . . )<br />

◮ A tečka?<br />

◮ \.<br />

20 / 27


Úvod Informace o prostředí Práce se soubory Regulární <strong>výrazy</strong> Konec<br />

Skupiny<br />

◮ (vzor) – se skupinami možno dále pracovat<br />

◮ Jednotlivé skupiny jsou číslovány (celý výraz má číslo 0)<br />

◮ \číslo – zopakování skupiny ve výrazu<br />

◮ (.)\1<br />

21 / 27


Úvod Informace o prostředí Práce se soubory Regulární <strong>výrazy</strong> Konec<br />

Skupiny<br />

◮ (vzor) – se skupinami možno dále pracovat<br />

◮ Jednotlivé skupiny jsou číslovány (celý výraz má číslo 0)<br />

◮ \číslo – zopakování skupiny ve výrazu<br />

◮ (.)\1 – dva po sobě jdoucí shodné znaky<br />

21 / 27


Úvod Informace o prostředí Práce se soubory Regulární <strong>výrazy</strong> Konec<br />

Skupiny<br />

◮ (vzor) – se skupinami možno dále pracovat<br />

◮ Jednotlivé skupiny jsou číslovány (celý výraz má číslo 0)<br />

◮ \číslo – zopakování skupiny ve výrazu<br />

◮ (.)\1 – dva po sobě jdoucí shodné znaky<br />

◮ $číslo – použití skupiny při nahrazování<br />

◮ Replace "(.)(.)", "$2$1"<br />

21 / 27


Úvod Informace o prostředí Práce se soubory Regulární <strong>výrazy</strong> Konec<br />

Skupiny<br />

◮ (vzor) – se skupinami možno dále pracovat<br />

◮ Jednotlivé skupiny jsou číslovány (celý výraz má číslo 0)<br />

◮ \číslo – zopakování skupiny ve výrazu<br />

◮ (.)\1 – dva po sobě jdoucí shodné znaky<br />

◮ $číslo – použití skupiny při nahrazování<br />

◮ Replace "(.)(.)", "$2$1" – prohození pořadí každých dvou znaků<br />

21 / 27


Úvod Informace o prostředí Práce se soubory Regulární <strong>výrazy</strong> Konec<br />

Skupiny<br />

◮ (vzor) – se skupinami možno dále pracovat<br />

◮ Jednotlivé skupiny jsou číslovány (celý výraz má číslo 0)<br />

◮ \číslo – zopakování skupiny ve výrazu<br />

◮ (.)\1 – dva po sobě jdoucí shodné znaky<br />

◮ $číslo – použití skupiny při nahrazování<br />

◮ Replace "(.)(.)", "$2$1" – prohození pořadí každých dvou znaků<br />

◮ Skupiny je možné pojmenovat<br />

◮<br />

◮<br />

(?vzor) – pojmenování<br />

\ – definice vzoru<br />

◮ ${jmeno} – nahrazování<br />

21 / 27


Úvod Informace o prostředí Práce se soubory Regulární <strong>výrazy</strong> Konec<br />

Další možnosti vyhledávání<br />

◮ vzor1|vzor2 – spojka nebo<br />

◮ (em|iv)a – ema nebo iva<br />

◮ ^ – začátek řetězce<br />

◮ $ – konec řetězce<br />

◮ \b – začátek/konec slova<br />

◮ \e[^\s]* – celé slovo (ukončené mezerou)<br />

22 / 27


Úvod Informace o prostředí Práce se soubory Regulární <strong>výrazy</strong> Konec<br />

Opakování<br />

◮ * – opakování vzoru (0-n)<br />

◮ + – opakování vzoru (minimálně jednou)<br />

◮ ? – výskyt vzoru 0 nebo 1 krát<br />

◮ {počet} – pevný počet opakování<br />

◮ {min,max} – pevný počet opakování (rozmezí)<br />

◮ Příklad: ”mama ma maso”<br />

◮ (ma)* - mama ma maso<br />

◮ m.*m - mama ma maso<br />

◮ ma\s*ma - mama ma maso<br />

◮ ma\s+ma - mama ma maso<br />

◮ (ma.?){3} - mama ma maso<br />

23 / 27


Úvod Informace o prostředí Práce se soubory Regulární <strong>výrazy</strong> Konec<br />

Regulární <strong>výrazy</strong> v .NETu<br />

◮ Namespace System.Text.RegularExpression<br />

◮ Třída Regex<br />

◮ obsahuje statické i nestatické metody<br />

◮ Match – vyhledá vzor a vrátí první výskyt<br />

◮ Matches – vyhledá vzor a vrátí všechny výskyty<br />

◮ IsMatch – zjistí zda se vzor v řetězci nachází<br />

◮ Split – podle vzoru rozdělí řetězec na pole řetězců<br />

◮ Replace – vyhledá vzory a nahradí je řetězcem<br />

◮ Pokud nejsou nutné <strong>regulární</strong> <strong>výrazy</strong>, použít metody třídy String<br />

◮<br />

◮<br />

◮<br />

IndexOf – vyhledání<br />

Split – rozdělení<br />

Replace – nahrazení<br />

24 / 27


Úvod Informace o prostředí Práce se soubory Regulární <strong>výrazy</strong> Konec<br />

Možnosti nahrazování<br />

◮ Metoda Replace existuje v několika exemplářích<br />

◮ možnost definovat vlastní metodu, která bude provádět složitější<br />

operace<br />

static string NaKila ( Match m)<br />

{<br />

string cislo = m. Groups [1]. ToString ();<br />

int velikost = int . Parse ( cislo );<br />

velikost /= 1024;<br />

return velikost . ToString ()+ "kB";<br />

}<br />

...<br />

string vysledek = Regex . Replace (text , @"(\d+)B",<br />

new MatchEvaluator ( NaKila ));<br />

25 / 27


Úvod Informace o prostředí Práce se soubory Regulární <strong>výrazy</strong> Konec<br />

Pár příkladů na závěr<br />

◮ Rodné číslo ( 000000/000? )<br />

26 / 27


Úvod Informace o prostředí Práce se soubory Regulární <strong>výrazy</strong> Konec<br />

Pár příkladů na závěr<br />

◮ Rodné číslo ( 000000/000? )<br />

◮ \d{6}/\d{3,4}<br />

26 / 27


Úvod Informace o prostředí Práce se soubory Regulární <strong>výrazy</strong> Konec<br />

Pár příkladů na závěr<br />

◮ Rodné číslo ( 000000/000? )<br />

◮ \d{6}/\d{3,4}<br />

◮ IP adresa ( 0??.0??.0??.0?? )<br />

26 / 27


Úvod Informace o prostředí Práce se soubory Regulární <strong>výrazy</strong> Konec<br />

Pár příkladů na závěr<br />

◮ Rodné číslo ( 000000/000? )<br />

◮ \d{6}/\d{3,4}<br />

◮ IP adresa ( 0??.0??.0??.0?? )<br />

◮ \d{1,3}(\.\d{1,3}){3}<br />

26 / 27


Úvod Informace o prostředí Práce se soubory Regulární <strong>výrazy</strong> Konec<br />

Pár příkladů na závěr<br />

◮ Rodné číslo ( 000000/000? )<br />

◮ \d{6}/\d{3,4}<br />

◮ IP adresa ( 0??.0??.0??.0?? )<br />

◮ \d{1,3}(\.\d{1,3}){3}<br />

◮ PSČ<br />

26 / 27


Úvod Informace o prostředí Práce se soubory Regulární <strong>výrazy</strong> Konec<br />

Pár příkladů na závěr<br />

◮ Rodné číslo ( 000000/000? )<br />

◮ \d{6}/\d{3,4}<br />

◮ IP adresa ( 0??.0??.0??.0?? )<br />

◮ \d{1,3}(\.\d{1,3}){3}<br />

◮ PSČ<br />

◮ \d{3} ?\d{2}<br />

26 / 27


Úvod Informace o prostředí Práce se soubory Regulární <strong>výrazy</strong> Konec<br />

Pár příkladů na závěr<br />

◮ Rodné číslo ( 000000/000? )<br />

◮ \d{6}/\d{3,4}<br />

◮ IP adresa ( 0??.0??.0??.0?? )<br />

◮ \d{1,3}(\.\d{1,3}){3}<br />

◮ PSČ<br />

◮ \d{3} ?\d{2}<br />

◮ email ( x.x@x.x.x )<br />

26 / 27


Úvod Informace o prostředí Práce se soubory Regulární <strong>výrazy</strong> Konec<br />

Pár příkladů na závěr<br />

◮ Rodné číslo ( 000000/000? )<br />

◮ \d{6}/\d{3,4}<br />

◮ IP adresa ( 0??.0??.0??.0?? )<br />

◮ \d{1,3}(\.\d{1,3}){3}<br />

◮ PSČ<br />

◮ \d{3} ?\d{2}<br />

◮ email ( x.x@x.x.x )<br />

◮ [\w. -]+@[\w.-]+\.[a-zA-Z]{2,4}<br />

26 / 27


Úvod Informace o prostředí Práce se soubory Regulární <strong>výrazy</strong> Konec<br />

Pár příkladů na závěr<br />

◮ Rodné číslo ( 000000/000? )<br />

◮ \d{6}/\d{3,4}<br />

◮ IP adresa ( 0??.0??.0??.0?? )<br />

◮ \d{1,3}(\.\d{1,3}){3}<br />

◮ PSČ<br />

◮ \d{3} ?\d{2}<br />

◮ email ( x.x@x.x.x )<br />

◮ [\w. -]+@[\w.-]+\.[a-zA-Z]{2,4}<br />

◮ není 100% korektní<br />

◮ vyhledávání vs. testování<br />

26 / 27


Úvod Informace o prostředí Práce se soubory Regulární <strong>výrazy</strong> Konec<br />

Konec<br />

27 / 27

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!