Znak zapytania i jego dwa znaczenia
Operator "lub" sprawdza się świetnie, gdy dokładnie wiesz, jakie opcje są możliwe i masz pewność, że jedna z nich wystąpi. Co jednak, gdy chcesz dopasować wzorzec, w którym jakaś część jest raz obecna, a innym razem nie? Tu z pomocą przychodzi znak zapytania ?:
? może uczynić poprzedzającą grupę lub znak opcjonalnymi. Dzięki niemu wyrażenie regularne dopasowuje tekst nawet wtedy, gdy pewna część wzorca jest nieobecna. Pamiętaj jednak, że jeśli ? wystąpi po kwantyfikatorze takim jak * lub +, może mieć dodatkowy efekt:
? może też zmienić poprzedzający kwantyfikator z "zachłannego" na "leniwy". Zamiast szukać jak największej liczby znaków, wyrażenie regularne będzie wtedy znajdować jak najmniejszą liczbę dopasowań.
To ćwiczenie jest częścią kursu
Wyrażenia regularne w R – poziom średnio zaawansowany
Instrukcje do ćwiczenia
- Dopasuj zarówno liczbę pojedynczą
"Screen", jak i liczbę mnogą"Screens", czyniąc ostatnie"s"opcjonalnym. - Dopasuj dowolną liczbę dowolnych znaków przed przecinkiem, używając
.*. - Dopasuj ten sam wzorzec ze znakiem zapytania
?po gwiazdce – czy widzisz różnicę?
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# 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 = "___,")