A interrogação e seus dois significados
O operador OR é útil quando você sabe exatamente quais opções são válidas e quando tem certeza de que uma delas está presente. Mas e se você quiser corresponder a um padrão em que uma parte às vezes aparece e às vezes não? É aí que entra o ponto de interrogação ?:
O ? pode tornar opcional o caractere ou grupo anterior. Com ele, uma expressão regular faz correspondência mesmo se uma parte do padrão estiver ausente. Mas atenção: se ele vier após um multiplicador como * ou +, o ponto de interrogação pode ter um segundo efeito:
O ? também pode tornar “preguiçoso” (lazy) o multiplicador anterior, em vez de “ganancioso” (greedy). Isso significa que, em vez de as expressões regulares buscarem o número máximo de caracteres, o ? passa a encontrar o número mínimo de correspondências no texto.
Este exercício faz parte do curso
Expressões Regulares Intermediárias em R
Instruções do exercício
- Faça corresponder tanto o singular
"Screen"quanto o plural"Screens"tornando o último"s"opcional. - Faça corresponder uma quantidade aleatória de caracteres arbitrários antes de uma vírgula usando
.*. - Faça corresponder o mesmo padrão com um ponto de interrogação
?após o asterisco — você percebe a diferença?
Exercício interativo prático
Experimente este exercício completando este código de exemplo.
# 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 = "___,")