How to extract everything until first occurrence of pattern How to extract everything until first occurrence of pattern r r

How to extract everything until first occurrence of pattern


To get L0, you may use

> library(stringr)> str_extract("L0_123_abc", "[^_]+")[1] "L0"

The [^_]+ matches 1 or more chars other than _.

Also, you may split the string with _:

x <- str_split("L0_123_abc", fixed("_"))> x[[1]][1] "L0"  "123" "abc"

This way, you will have all the substrings you need.

The same can be achieved with

> str_extract_all("L0_123_abc", "[^_]+")[[1]][1] "L0"  "123" "abc"


The regex lookaround should be

str_extract("L0_123_abc", ".+?(?=_)")#[1] "L0"


Using gsub...

gsub("(.+?)(\\_.*)", "\\1", "L0_123_abc")