Il punto interrogativo e i suoi due significati
L'operatore OR è utile se sai esattamente quali opzioni sono valide e se sei sicuro che una delle opzioni sia presente. Ma se vuoi trovare un pattern in cui una parte a volte c'è e a volte no? Qui entra in gioco il punto interrogativo ?:
Il ? può rendere opzionale il gruppo o il carattere precedente. Con esso, un'espressione regolare fa match anche se una certa parte del pattern manca. Attenzione però: se segue un moltiplicatore come * o +, il punto interrogativo può avere un secondo effetto:
Il ? può anche rendere il moltiplicatore precedente "pigro" (lazy) invece che "ingordo" (greedy). Significa che, invece di cercare il numero massimo di caratteri, con il ? l'espressione regolare punta a trovare il numero minimo di corrispondenze nel testo.
Questo esercizio fa parte del corso
Espressioni regolari intermedie in R
Istruzioni dell'esercizio
- Fai combaciare sia il singolare
"Screen"sia il plurale"Screens"rendendo opzionale l'ultima"s". - Fai combaciare una quantità qualsiasi di caratteri arbitrari davanti a una virgola usando
.*. - Fai combaciare lo stesso pattern con un punto interrogativo
?dopo l'asterisco: noti la differenza?
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
# 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 = "___,")