I haven't used this function myself, but you can escape special characters using \. This itself is a special character, and needs to be escaped as well.
alpha <- "[:alpha:]+"
chara <- ".a.b.c (good) .e.f.g (bad) "
data.frame(stringr::str_extract_all(chara,alpha,simplify = TRUE)) -> dat
colnames(dat) <- rep(paste("col_",1:length(dat)))
dat
#> col_ 1 col_ 2 col_ 3 col_ 4 col_ 5 col_ 6 col_ 7 col_ 8
#> 1 a b c good e f g bad
Updated to change
to make the third positional argument explicit. H/T @Yarnabrina
FWIW, there's a vignette on regular expressions in stringr that you might want to check out. In fact, it even covers one of your precise cases!
If β . β matches any character, how do you match a literal β . β? You need to use an βescapeβ to tell the regular expression you want to match it exactly, not use its special behaviour. Like strings, regexps use the backslash, \ , to escape special behaviour. So to match an . , you need the regexp \. . Unfortunately this creates a problem. We use strings to represent regular expressions, and \ is also used as an escape symbol in strings. So to create the regular expression \. we need the string "\\." .