Extract string before "|" [duplicate]
We can use sub
sub("\\|.*", "", str1)#[1] "ABC"
Or with strsplit
strsplit(str1, "[|]")[[1]][1]#[1] "ABC"
Update
If we use the data from @hrbrmstr
sub("\\|.*", "", df$V1)#[1] "ABC" "ABCD" "ABCDE" "DEF" "GHI" "BCDE"
These are all base R methods. No external packages used.
data
str1 <- "ABC|DEF|GHI ABCD|EFG|HIJK ABCDE|FGHI|JKL DEF|GHIJ|KLM GHI|JKLM|NO|PQRS BCDE|FGHI|JKL"
with stringi
:
library(stringi)df <- read.table(text="ABC|DEF|GHI,1ABCD|EFG|HIJK,2ABCDE|FGHI|JKL,3 DEF|GHIJ|KLM,4GHI|JKLM|NO|PQRS,5BCDE|FGHI|JKL,6", sep=",", header=FALSE, stringsAsFactors=FALSE)stri_match_first_regex(df$V1, "(.*?)\\|")[,2]## [1] "ABC" "ABCD" "ABCDE" "DEF" "GHI" "BCDE"