Ve spolupráci se SEDUO jsem vytvořil několik videokurzů:
^ab*$ aneb jak na regulární výrazy v Excel
Na jednom ze školení byl zajímavý dotaz, umí Excel hledat dle regulárních výrazů. Umí ale ve VBA a musí se tato funkce povolit. Dotaz zaujal a já napsal článek a z důvodu přehlednosti ho rozdělil na tyto kapitoly:
Potřeboval jsem hlavně pro sebe, ale hodit se bude určitě i vám.
| Znak | Použití | Najde | Nenajde | Popis |
|---|---|---|---|---|
| bcd | bcd, abcd, bcde, abcde | bacd | každý řetězec osahující slovo | |
| ^ | ^bcd | bcd, bcdef, bcdee | abcde | označuje začátek řetězce |
| $ | bcd$ | abcd, bcd, aabbcd | bcdef | označuje konec řetězce |
| . | .bcd | abcd, aabcd,abcde | bcd | zastupuje libovolný znak |
| . | ^.bcd$ | abcd | aabcd,abcde, bcd | zastupuje libovolný znak |
| * | ab* | abcd, aabcd, abbbb, a, abb | bb | opakování předcházejícího znaku 0 a víckrát |
| * | ^ab*$ | abbbb, a, abb | abcd, aabcd, bb | opakování předcházejícího znaku 0 a víckrát je stejné {0,} |
| + | ^ab+$ | abbbb, abb | abcd, aabcd, bb, a | opakování předcházejícího znaku jednou- a víckrát je stejné {1,} |
| ? | ^ab?$ | a, ab | abcd, aabcd, bb | opakování předcházejícího znaku jednou nebo nula je stejné {0,1} |
| {2,3} | ^ab{2,3}$ | abb, abbb | abcd, ab, aabb | opakování předchozího znaku 2 až 3 krát |
| {5} | ^ab{5}$ | abbbbb | abcd, ab, aabb | opakování předchozího znaku 5 krát |
| {2,} | ^ab{2,}$ | abb, abbb, abbbb | ab, aabb | opakování předchozího znaku 2 krát a více |
| [] | ^a[klm]$ | ak, al, am | abcd, ab, aabb | jeden znak ze seznamu v závorkách |
| [] | ^[a-z]*$ | ak, al, am | abCd, aB | řetězce z malých písmen |
| [] | ^[a-zA-Z]*$ | ak, al, am, ABC, aB | abCd1, aa2 | řetězce z malých a velkých písmen |
| [] | ^[a-zA-Z0-9]*$ | ak, al1, am, ABC, aB | řetězce z malých a velkých písmen a čísel (nenajde napr. "-_,!" alebo "ščžý" ) | |
| ^ | ^[^0-9] | ak, al, am, ABC, aB | 1abCd1, 8aa2 | negace pokud a začátku, najde jen a A (na začátku) |
| | | ^(0|1|2|3|4|5|6|7|8|9) | 1abCd1, 8aa2 | ak, al, am, ABC, | význam logického OR, najde číslo na začátku |
| - | ^[0-9] | 1abCd1, 8aa2 | ak, al, am, ABC, | je stejné jako ^(0|1|2|3|4|5|6|7|8|9) |
| () | ^(abcd)*$ | abcd, abcdabcd, abcdabcdabcd | abc | seskupení řetězce |
| \ | ^\*$ | * | abc | libovoný znak |
| \ | \* | *, *ab, aa*bb | abc | najde hvězdičku |
| - | ^[a-z]*$ | ak, al, am | abCd, aB | rosah |
Předpokládám alespoň základní znalosti VBA (jak spustit editor VBA) tak jen ve zkratce. Bohužel po instalaci Microsoft Excel není podpora pro regulární výrazy k dispozici (Excel 2010). Zpřístupnění regulárních výrazů provedete:
Děkuji Jojo za doplnění v komentářích, možnosti jak nemuset ručně zapínnat Microsoft VBScript Regular Expressions 5.5 .
Dim regEx As Object
' create the RegExp Object with late binding
Set regEx = CreateObject("vbscript.regexp")
Kontroluji zda hodnota v A1 odpovídá regulárnímu výrazu v B1. Odpověď do MsgBox.
Dim regEx As New RegExp
strInput = ActiveSheet.Range("A1").Value
strPattern = ActiveSheet.Range("B1").Value
With regEx
.Global = True
.MultiLine = True
.IgnoreCase = False
.Pattern = strPattern
End With
If regEx.Test(strInput) Then
MsgBox ("OK")
Else
MsgBox ("Neodpovídá.")
End If
V přípravě.
Soubor
Regulární výraz - praktické příklady - VBA
ke stažení zdarma. Soubor využívá makra.
Napadá vás jiné použití regulárních výrazů? Můžete využít komentáře.
Článek byl aktualizován: 19.09.2020 11:07
Pomohl vám článek? Vyřešili jste problém? Můžete mě podpořit zakoupení tabulky (samozdřejmě čokoládové), když kafe nepiji ;) Odkaz na zakoupení čokolády. Za veškerou podporu vám děkuji a samozdřejmě jí využiji do zdokonalování a rozšířování webu.
Případně přidejte odkaz na vaši oblíbenou sociální síť, případně využijste hashtag #JakNaExcel .
Děkuji za váš čas a doufám, že jste nalezli odpověď na svůj problém.
Narazili jste v článku na nejasnost, chybu? Máte tip na vylepšení nebo doplnění článku? Budu rád pokud se zmínite v komentářích.
Microsoft Office (Word, Excel, Google tabulky, PowerPoint) se věnuji od roku 2000 (od dubna roku 2004 na této doméně) - V roce 2017 jsem od Microsoft získal prestižní ocenění MVP (zatím 8x za sebou). Své vědomosti a zkušenosti dávám k dispozici i on-line ve videích pro SEDUO. Ve firmách školím a konzultuji, učím na MUNI. Tento web již tvořím přes 20 let (o Excel píší přes 25). Zdarma je zde přes 1.500 návodu, tipů a triků, včetně přes 350 různých šablon, sešitů a přes 70 taháků v pdf.
|
Pomohl Vám návod? Sdílejte na Facebooku, G+ |
||
|
LinkedIn... |
Stránky o MS Office (Excel) produktu společnosti Microsoft. Neslouží jako technická podpora.
| Email na autora: pavel.lasak@gmail.com | Copyright © : Pavel Lasák 2004 - 2025 |