Regulární výrazy: Porovnání verzí
Z Milan Kerslager
(Založení článku) |
m (→Přehled: cap) |
||
| (Nejsou zobrazeny 2 mezilehlé verze od stejného uživatele.) | |||
| Řádka 1: | Řádka 1: | ||
'''Regulární výrazy''' slouží pro obecný popis textových řetězců. Rozdělují se na regulární výrazy podle normy POSIX a podle jazyka Perl. Využívají se při zpracování textů (hledání, nahrazování), kontrole vstupu (rodné číslo, URL, e-mailová adresa, ...). Jejich podporu nalezneme přímo v některých programovacích jazycích (Perl, Python), používají je unixové nástroje (příkaz <code>grep</code>), jsou k dispozici v podobě knihoven atd. | '''Regulární výrazy''' slouží pro obecný popis textových řetězců. Rozdělují se na regulární výrazy podle normy POSIX a podle jazyka Perl. Využívají se při zpracování textů (hledání, nahrazování), kontrole vstupu (rodné číslo, URL, e-mailová adresa, ...). Jejich podporu nalezneme přímo v některých programovacích jazycích (Perl, Python), používají je unixové nástroje (příkaz <code>grep</code>), jsou k dispozici v podobě knihoven atd. | ||
| + | |||
| + | == Přehled == | ||
| + | |||
| + | :{| class=wikitable | ||
| + | |+ '''Základní a rozšířené POSIXové regulární výrazy''' | ||
| + | ! Základní | ||
| + | ! Rozšířený | ||
| + | ! Popis | ||
| + | |- | ||
| + | | align=center | <code>.</code> | ||
| + | | align=center | | ||
| + | | Jakýkoliv 1 znak (i žádný znak) | ||
| + | |- | ||
| + | | align=center | <code>[abc]</code> | ||
| + | | align=center | | ||
| + | | Jeden z uvedených znaků | ||
| + | |- | ||
| + | | align=center | <code>[^abc]</code> | ||
| + | | align=center | | ||
| + | | Žádný z uvedených znaků | ||
| + | |- | ||
| + | | align=center | <code>[c..e]</code> | ||
| + | | align=center | | ||
| + | | Jeden z rozsahu uvedených znaků (zde c, d nebo e) | ||
| + | |- | ||
| + | | align=center | <code>^</code> | ||
| + | | align=center | | ||
| + | | Začátek řádku (řetězce) | ||
| + | |- | ||
| + | | align=center | <code>$</code> | ||
| + | | align=center | | ||
| + | | Konec řádku (řetězce) | ||
| + | |- | ||
| + | | align=center | <code>\( \)</code> | ||
| + | | align=center | <code>( )</code> | ||
| + | | Skupina znaků (zapamatovatelná) | ||
| + | |- | ||
| + | | align=center | <code>*</code> | ||
| + | | align=center | | ||
| + | | Libovolné opakování předchozího znaku (skupiny), i žádné (0 krát) | ||
| + | |- | ||
| + | | align=center | <code>\n</code> | ||
| + | | align=center | | ||
| + | | Zapamatovaná skupina číslo ''n'' | ||
| + | |- | ||
| + | | align=center | <code>\{m,n\}</code> | ||
| + | | align=center | <code>{m,n}</code> | ||
| + | | Opakování předchozího znaku (skupiny) ''m'' až ''n'' krát | ||
| + | |- | ||
| + | | align=center | | ||
| + | | align=center | <code>?</code> | ||
| + | | Žádný nebo jednonásobný výskyt předchozího znaku (skupiny) | ||
| + | |- | ||
| + | | align=center | | ||
| + | | align=center | <code>+</code> | ||
| + | | Jedno- nebo vícenásobné opakování předchozího znaku (skupiny) | ||
| + | |- | ||
| + | | align=center | | ||
| + | | align=center | <code>|</code> | ||
| + | | Vyznačení variant (logická spojka nebo) | ||
| + | |} | ||
| + | |||
| + | :{| class="wikitable" | ||
| + | |+ '''Třídy znaků podle POSIXu a Perlu''' | ||
| + | ! POSIX !! Perl !! ASCII !! Popis | ||
| + | |- | ||
| + | | <code>[:alnum:]</code> | ||
| + | | | ||
| + | | <code>[A-Za-z0-9]</code> | ||
| + | | Alfanumerické znaky | ||
| + | |- | ||
| + | | <code>[:word:]</code> | ||
| + | | <code>\w</code> | ||
| + | | <code>[A-Za-z0-9_]</code> | ||
| + | | Alfanumerické znaky plus "_" | ||
| + | |- | ||
| + | | | ||
| + | | <code>\W</code> | ||
| + | | <code>[^\w]</code> | ||
| + | | Znaky netvořící slova | ||
| + | |- | ||
| + | | <code>[:alpha:]</code> | ||
| + | | | ||
| + | | <code>[A-Za-z]</code> | ||
| + | | Alfabetické znaky | ||
| + | |- | ||
| + | | <code>[:blank:]</code> | ||
| + | | | ||
| + | | <code>[ \t]</code> | ||
| + | | Mezera a tabelátor | ||
| + | |- | ||
| + | | <code>[:cntrl:]</code> | ||
| + | | | ||
| + | | <code>[\x00-\x1F\x7F]</code> | ||
| + | | Řídící znaky | ||
| + | |- | ||
| + | | <code>[:digit:]</code> | ||
| + | | <code>\d</code> | ||
| + | | <code>[0-9]</code> | ||
| + | | Čísla | ||
| + | |- | ||
| + | | | ||
| + | | <code>\D</code> | ||
| + | | <code>[^\d]</code> | ||
| + | | Nečíselné znaky | ||
| + | |- | ||
| + | | <code>[:graph:]</code> | ||
| + | | | ||
| + | | <code>[\x21-\x7E]</code> | ||
| + | | Viditelné znaky | ||
| + | |- | ||
| + | | <code>[:lower:]</code> | ||
| + | | | ||
| + | | <code>[a-z]</code> | ||
| + | | Malá písmena | ||
| + | |- | ||
| + | | <code>[:print:]</code> | ||
| + | | | ||
| + | | <code>[\x20-\x7E]</code> | ||
| + | | Viditelné znaky a mezery | ||
| + | |- | ||
| + | | <code>[:punct:]</code> | ||
| + | | | ||
| + | | <code><nowiki>[-!"#$%&'()*+,./:;<=>?@\[\\\]_`{|}~]</nowiki></code> | ||
| + | | Speciální znaky | ||
| + | |- | ||
| + | | <code>[:space:]</code> | ||
| + | | <code>\s</code> | ||
| + | | <code>[ \t\r\n\v\f]</code> | ||
| + | | Bílé znaky (mezery atp.) | ||
| + | |- | ||
| + | | <code></code> | ||
| + | | <code>\S</code> | ||
| + | | <code>[^\s]</code> | ||
| + | | Znaky, které nejsou bílými znaky | ||
| + | |- | ||
| + | | <code>[:upper:]</code> | ||
| + | | | ||
| + | | <code>[A-Z]</code> | ||
| + | | Velká písmena | ||
| + | |- | ||
| + | | <code>[:xdigit:]</code> | ||
| + | | | ||
| + | | <code>[A-Fa-f0-9]</code> | ||
| + | | Hexadecimální čísla | ||
| + | |} | ||
== Externí odkazy == | == Externí odkazy == | ||
* http://www.root.cz/clanky/regularni-vyrazy-1/ – série 5 dílů | * http://www.root.cz/clanky/regularni-vyrazy-1/ – série 5 dílů | ||
Aktuální verze z 8. 12. 2009, 16:49
Regulární výrazy slouží pro obecný popis textových řetězců. Rozdělují se na regulární výrazy podle normy POSIX a podle jazyka Perl. Využívají se při zpracování textů (hledání, nahrazování), kontrole vstupu (rodné číslo, URL, e-mailová adresa, ...). Jejich podporu nalezneme přímo v některých programovacích jazycích (Perl, Python), používají je unixové nástroje (příkaz grep), jsou k dispozici v podobě knihoven atd.
Přehled
Základní a rozšířené POSIXové regulární výrazy Základní Rozšířený Popis .Jakýkoliv 1 znak (i žádný znak) [abc]Jeden z uvedených znaků [^abc]Žádný z uvedených znaků [c..e]Jeden z rozsahu uvedených znaků (zde c, d nebo e) ^Začátek řádku (řetězce) $Konec řádku (řetězce) \( \)( )Skupina znaků (zapamatovatelná) *Libovolné opakování předchozího znaku (skupiny), i žádné (0 krát) \nZapamatovaná skupina číslo n \{m,n\}{m,n}Opakování předchozího znaku (skupiny) m až n krát ?Žádný nebo jednonásobný výskyt předchozího znaku (skupiny) +Jedno- nebo vícenásobné opakování předchozího znaku (skupiny) |Vyznačení variant (logická spojka nebo)
Třídy znaků podle POSIXu a Perlu POSIX Perl ASCII Popis [:alnum:][A-Za-z0-9]Alfanumerické znaky [:word:]\w[A-Za-z0-9_]Alfanumerické znaky plus "_" \W[^\w]Znaky netvořící slova [:alpha:][A-Za-z]Alfabetické znaky [:blank:][ \t]Mezera a tabelátor [:cntrl:][\x00-\x1F\x7F]Řídící znaky [:digit:]\d[0-9]Čísla \D[^\d]Nečíselné znaky [:graph:][\x21-\x7E]Viditelné znaky [:lower:][a-z]Malá písmena [:print:][\x20-\x7E]Viditelné znaky a mezery [:punct:][-!"#$%&'()*+,./:;<=>?@\[\\\]_`{|}~]Speciální znaky [:space:]\s[ \t\r\n\v\f]Bílé znaky (mezery atp.) \S[^\s]Znaky, které nejsou bílými znaky [:upper:][A-Z]Velká písmena [:xdigit:][A-Fa-f0-9]Hexadecimální čísla
Externí odkazy
- http://www.root.cz/clanky/regularni-vyrazy-1/ – série 5 dílů