Otazník a jeho dva významy
Operátor nebo se hodí, když přesně víš, jaké možnosti jsou platné, a jsi si jistý/á, že jedna z nich v textu vždy bude. Co ale dělat, když chceš zachytit vzor, jehož část se někdy vyskytuje a někdy ne? Tady přichází na řadu otazník ?:
? dělá předcházející skupinu nebo znak volitelným. Regulární výraz pak najde shodu i tehdy, když daná část vzoru v textu chybí. Pozor ale na to, že pokud otazník následuje za kvantifikátorem jako * nebo +, může mít ještě druhý efekt:
? také mění předcházející kvantifikátor z „chamtivého" na „líný". Místo toho, aby regulární výraz hledal co největší počet znaků, ho ? přiměje najít co nejmenší možný počet shod.
Toto cvičení je součástí kurzu
Intermediate Regular Expressions in R
Pokyny k cvičení
- Zachyť jak singulár
"Screen", tak plurál"Screens"tím, že poslední"s"uděláš volitelným. - Zachyť libovolný počet libovolných znaků před čárkou pomocí
.*. - Zkus stejný vzor s otazníkem
?za hvězdičkou – vidíš rozdíl?
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
# Match both Screen and Screens by making the last "s" optional
str_match(lines, pattern = "Screens___")
# Match a random amount of arbitrary characters, followed by a comma
str_match(lines, pattern = "___,")
# Match the same pattern followed by a comma, but the "lazy" way
str_match(lines, pattern = "___,")