R 从x的第一次出现到y的第n次出现的捕获

R 从x的第一次出现到y的第n次出现的捕获,r,regex,gsub,R,Regex,Gsub,我有一个正则表达式的问题,这个问题似乎可以解决,但我似乎无法得到正确的答案 给出如下所示的字符串: id1234|a; b; c; d id5678|a; b; e; f id9012|a; g; h; i 我试图从管道中捕捉到分号的固定出现,直觉上,我希望出现如下情况: "(?<=\\|)(([^;]*;){1}[^;]*).*" 从行首到第二个分号进行选择 认为: (?<=\|)(([^;]*;){1}[^;]*).* (?您之所以会收到错误,是因为您

我有一个正则表达式的问题,这个问题似乎可以解决,但我似乎无法得到正确的答案

给出如下所示的字符串:

id1234|a; b; c; d
id5678|a; b; e; f
id9012|a; g; h; i
我试图从管道中捕捉到分号的固定出现,直觉上,我希望出现如下情况:

"(?<=\\|)(([^;]*;){1}[^;]*).*"
从行首到第二个分号进行选择

认为:

(?<=\|)(([^;]*;){1}[^;]*).*

(?您之所以会收到错误,是因为您使用的是回溯,
(?[1]“a;b”“a;b”“a;g”“a;j”
(?<=\|)(([^;]*;){1}[^;]*).*
a <- c("id1234|a; b; c; d",
       "id5678|a; b; e; f",
       "id9012|a; g; h; i",
       "id3456|a; j; k; l")

b <- gsub(pattern = "^(([^;]*;){1}[^;]*).*",
          replacement = "\\1",
          x = a)
b
[1] "id1234|a; b" "id5678|a; b" "id9012|a; g" "id3456|a; j"

c <- gsub(pattern = "(?<=\\|)(([^;]*;){1}[^;]*).*",
          replacement = "\\1",
          x = a)
Error in gsub(pattern = "(?<=\\|)(([^;]*;){1}[^;]*).*", replacement = "\\1",  : 
  invalid regular expression '(?<=\|)(([^;]*;){1}[^;]*).*', reason 'Invalid regexp'
In addition: Warning message:
In gsub(pattern = "(?<=\\|)(([^;]*;){1}[^;]*).*", replacement = "\\1",  :
  TRE pattern compilation error 'Invalid regexp'