Here is an example:
string = "-3e9, 9E-2"
pattern <- "([+-]?)(\\d+)(\\.\\d+)?[eE]([+-]?)(\\d+)"
stringr::str_match_all(string = string, pattern = pattern)
stringr::str_match(string = string, pattern = pattern)
str_match reports NA, while str_match_all reports an empty string.