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 r
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