正则表达式和正确使用不

Ber*_*iss 1 regex r

我有以下变量名称向量:

vn <- c("id", "pid", "wave", "psex", "pdobd", "pdobm", "pdoby", "psat3", 
"ppa21i1", "psd23i19")
Run Code Online (Sandbox Code Playgroud)

我很难找到一个正确的正则表达式来删除所有第一个p而不是"pid".

sub(???, "", vn) ## I tried "^p[^id]?" but to no avail...
Run Code Online (Sandbox Code Playgroud)

所以,结果看起来像:

c("id", "pid", "wave", "sex", "dobd", "dobm", "doby", "sat3", 
"pa21i1", "sd23i19")
Run Code Online (Sandbox Code Playgroud)

Ani*_*dha 7

你需要使用零宽度断言(负向前瞻)

^p(?!id)
Run Code Online (Sandbox Code Playgroud)

不要忘记将perl参数设置为TRUE