grepl & grep (2)
Du kannst das Caret-Zeichen (^
) und das Dollar-Zeichen ($
) verwenden, um den Inhalt am Anfang bzw. Ende einer Zeichenkette abzugleichen. Das könnte uns einen Schritt näher an ein korrektes Muster bringen, mit dem wir nur die auf .edu endenden E-Mail-Adressen in unserer E-Mail-Liste finden. Es gibt aber noch mehr, was man hinzufügen kann, um das Muster zu verbessern:
@
: Eine gültige E-Mail-Adresse muss dieses Zeichen enthalten..*
: Gleicht jedes Zeichen (.) null Mal oder häufiger (*) ab. Sowohl der Punkt als auch das Sternchen sind Metazeichen. Du kannst sie verwenden, um beliebige Zeichen zwischen dem @-Zeichen und dem .edu-Teil einer E-Mail-Adresse abzugleichen.\\.edu$
: Damit wird am Ende der Zeichenkette nach dem .edu-Teil der E-Mail-Adresse gesucht. Der\\
-Teil maskiert den Punkt: So weiß R, dass du.
als tatsächliches Zeichen verwenden willst.
Diese Übung ist Teil des Kurses
R für Fortgeschrittene
Anleitung zur Übung
- Nutze
grepl()
mit dem komplexeren regulären Ausdruck, um einen logischen Vektor zurückzugeben. Gib das Ergebnis einfach aus. - Tu nun Ähnliches mit
grep()
, um einen Vektor mit Indizes zu erstellen. Speichere das Ergebnis in der Variablehits
. - Verwende erneut
emails[hits]
, um eine Teilmenge des Vektorsemails
zu erstellen.
Interaktive Übung zum Anfassen
Probieren Sie diese Übung aus, indem Sie diesen Beispielcode ausführen.
# The emails vector has already been defined for you
emails <- c("[email protected]", "[email protected]", "[email protected]",
"invalid.edu", "[email protected]", "[email protected]")
# Use grepl() to match for .edu addresses more robustly
# Use grep() to match for .edu addresses more robustly, save result to hits
# Subset emails using hits