I'd like a regex for sub in R to substitute the characters in a string which follow the nth occurrence of ";" in that string, where n is a variable number passed to the regex.
stringA="a; b; c; d; e; f; g; h; i; j;"
stringB<-sub("^(;){4}.*", "", stringA)
##---------------^My attempt at a regular expression here-------
Desired output:
stringB
"a; b; c; d;"
You can use the following regex:
^((?:[^;]*;){4}).*
It matches:
^
- start of string((?:[^;]*;){4})
- (Group 1) captures a substring comprising 4 (or any number you pass with s
variable) occurrences of
[^;]*
- 0 or more symbols other than ;
;
- a literal semi-colon.*
- 0 or more characters, as many as possibleUsing backreference \\1
in the replacement pattern we restore the leading substring in the result.
See IDEONE demo (here, the limit threshold is passed as a string):
stringA="a; b; c; d; e; f; g; h; i; j;"
s <- "4"
stringB <- sub(sprintf("^((?:[^;]*;){%s}).*", s), "\\1", stringA)
stringB
## "a; b; c; d;"
Or, if you pass an integer value
s <- 4
sub(sprintf("^((?:[^;]*;){%d}).*", s), "\\1", stringA)
See another demo
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With