⊗pyPmREChS 40 of 129 menu

Sady znaků v regulárních výrazech Python

Skupiny znaků \d a \w nejsou příliš flexibilní. Dokonce i tak jednoduchý úkol, jako najít všechna písmena, ale ne číslice - nemůže být jimi vyřešen. Pro takové úkoly by se měly použít hranaté závorky, představující operaci 'nebo'.

Hranaté závorky nahrazují jeden znak, libovolný z těch uvnitř. Například takto: x[abc]x - říkáme, že na okrajích musí být písmena x, a uvnitř - jeden znak: nebo 'a', nebo 'b', nebo 'c'.

Za hranatými závorkami lze psát operátory opakování. Například takto: x[abc]+x - říkáme, že uvnitř x může být libovolný počet znaků 'a', 'b' a 'c' - v libovolných kombinacích.

Lze nejen vypisovat znaky, ale i vytvářet skupiny znaků zápisem mezi dvěma znaky pomlčku. Například takto: [a-d] - získáme všechny znaky od 'a' do 'd'.

Podívejme se na příklady.

Příklad

V tomto příkladu vypadá vzor hledání takto: mezi x libovolné písmeno od 'a' do 'z':

<+Python+> txt = 'xax xbx xcx x@x' res = re.sub('x[a-z]x', '!', txt) print(res) <-python->

Výsledek provedení kódu:

'! ! ! x@x'

Příklad

V tomto příkladu vypadá vzor hledání takto: mezi x libovolné písmeno od 'a' do 'k':

txt = 'xax xbx xmx x@x' res = re.sub('x[a-k]x', '!', txt) print(res)

Výsledek provedení kódu:

'! ! xmx x@x'

Příklad

V tomto příkladu vypadá vzor hledání takto: mezi x libovolné písmeno od 'A' do 'Z':

txt = 'xax xBx xcx x@x' res = re.sub('x[A-Z]x', '!', txt) print(res)

Výsledek provedení kódu:

'xax ! xcx x@x'

Příklad

V tomto příkladu vypadá vzor hledání takto: mezi x libovolná číslice od 0 do 9:

txt = 'xax x1x x3x x5x x@x' res = re.sub('x[0-9]x', '!', txt) print(res)

Výsledek provedení kódu:

'xax ! ! ! x@x'

Příklad

V tomto příkladu vypadá vzor hledání takto: mezi x libovolná číslice od 3 do 7:

txt = 'xax x1x x3x x5x x@x' res = re.sub('x[3-7]x', '!', txt) print(res)

Výsledek provedení kódu:

'xax x1x ! ! x@x'

Příklad

V tomto příkladu vypadá vzor hledání takto: mezi x libovolné písmeno od 'a' do 'z' nebo číslice od 1 do 9:

txt = 'xax x1x x3x x5x x@x' res = re.sub('x[a-z1-9]x', '!', txt) print(res)

Výsledek provedení kódu:

'! ! ! ! x@x'

Příklad

V tomto příkladu vypadá vzor hledání takto: mezi x libovolné písmeno od 'a' do 'z' nebo písmeno od 'A' do 'Z':

txt = 'xax xBx xcx x5x x@x' res = re.sub('x[a-zA-Z]x', '!', txt) print(res)

Výsledek provedení kódu:

'! ! ! x5x x@x'

Příklad

V tomto příkladu vypadá vzor hledání takto: mezi x libovolné písmeno od 'a' do 'z' nebo číslice 1, 2:

txt = 'xax xbx x1x x2x x3x' res = re.sub('x[a-z12]x', '!', txt) print(res)

Výsledek provedení kódu:

'! ! ! ! x3x'

Příklad

V tomto příkladu vypadá vzor hledání takto: mezi x písmena od 'a' do 'z' v množství od 1 a více:

txt = 'xx xabesx xaadx x123x xa3x' res = re.sub('x[a-z]+x', '!', txt) print(res)

Výsledek provedení kódu:

'xx ! ! ! x123x xa3x'

Příklad

Udělejme to, aby počet písmen mohl být i nula:

txt = 'xx xabesx xaadx x123x xa3x' res = re.sub('x[a-z]*x', '!', txt) print(res)

Ve výsledku dostaneme:

'! ! ! ! x123x xa3x'

Příklad

Uvnitř hranatých závorek lze také uvádět escapované znaky. Najděme posloupnost písmen a číslic, opakující se nula nebo vícekrát:

txt = 'xx x@x xadx xas12x xa3x' res = re.sub('x[a-z\d]*x', '!', txt) print(res)

Výsledek provedení kódu:

'! x@x ! ! !'

Příklad

Pokud potřebujeme uvést ještě jedny hranaté závorky, tak je také musíme escapovat:

txt = 'xx xrx xas[]x x3x' res = re.sub('x[a-z\[\]]*x', '!', txt) print(res)

Výsledek provedení kódu:

'! ! ! x3x'

Praktické úlohy

Je dán řetězec:

txt = 'aba aea aca aza axa'

Napište regulární výraz, který najde podle následujícího vzoru: na okrajích stojí písmena 'a', a mezi nimi - písmeno 'b', 'e' nebo 'x'.

Je dán řetězec:

txt = 'a1a a3a a7a a9a aba'

Napište regulární výraz, který najde podle následujícího vzoru: na okrajích stojí písmena 'a', a mezi nimi - číslice od 3 do 6.

Je dán řetězec:

txt = 'aba aea afa aha aga'

Napište regulární výraz, který najde podle následujícího vzoru: na okrajích stojí písmena 'a', a mezi nimi - písmeno od 'a' do 'g'.

Je dán řetězec:

txt = 'aba aea afa aha aga'

Napište regulární výraz, který najde podle následujícího vzoru: na okrajích stojí písmena 'a', a mezi nimi - písmeno od 'a' do 'f' a od 'j' do 'z'.

Je dán řetězec:

txt = 'aAa aea aEa aJa a3a'

Napište regulární výraz, který najde podle následujícího vzoru: na okrajích stojí písmena 'a', a mezi nimi - písmeno od 'a' do 'f' a od 'A' do 'D'.

Je dán řetězec:

txt = 'aAXa aeffa aGha aza ax23a a3sSa'

Napište regulární výraz, který najde podle následujícího vzoru: na okrajích stojí písmena 'a', a mezi nimi - malá latinská písmena, bez zásahu ostatních.

Je dán řetězec:

txt = 'aAXa aeffa aGha aza ax23a a3sSa'

Napište regulární výraz, který najde podle následujícího vzoru: na okrajích stojí písmena 'a', a mezi nimi - malá a velká latinská písmena, bez zásahu ostatních.

Je dán řetězec:

txt = 'aAXa aeffa aGha aza ax23a a3sSa'

Napište regulární výraz, který najde podle následujícího vzoru: na okrajích stojí písmena 'a', a mezi nimi - malá latinská písmena a číslice, bez zásahu ostatních.

Čeština
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Používáme soubory cookie pro fungování webu, analýzu a personalizaci. Zpracování údajů probíhá v souladu s Zásadami ochrany osobních údajů.
přijmout vše přizpůsobit odmítnout