Substitute/remove after nth occurrence of substring in string

前端 未结 1 1751
死守一世寂寞
死守一世寂寞 2020-12-11 20:16

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

相关标签:
1条回答
  • 2020-12-11 20:26

    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 possible

    Using 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

    0 讨论(0)
提交回复
热议问题