[r] Remove pattern from string with gsub

I am struggling to remove the substring before the underscore in my string. I want to use * (wildcard) as the bit before the underscore can vary:

a <- c("foo_5", "bar_7")

a <- gsub("*_", "", a, perl = TRUE)

The result should look like:

> a
[1] 5 7

I also tried stuff like "^*" or "?" but did not really work.

This question is related to r gsub

The answer is


as.numeric(gsub(pattern=".*_", replacement = '', a)
[1] 5 7

Just to point out that there is an approach using functions from the tidyverse, which I find more readable than gsub:

a %>% stringr::str_remove(pattern = ".*_")

Alternatively, you can also try:

gsub("\\S+_", "", a)