R:正则表达式错误,尽管它在正则表达式 101 中工作

R: Regex error despite it working in regex 101

这是我的第一个问题(我还在学习R),如果这个问题太愚蠢,我提前道歉。
我正在尝试弄清楚如何制作一个捕获第一个字符串的正则表达式,但 而不是 第二个字符串。

strings <- c("p1_32_XYX_cancer_1", "p1_32_XYX_cancer_ttt_1")

我在 regex101 上测试过,我想出的最好的是这个(它适用于 regex101)。但是,当我尝试在 R 中输入它时,出现以下错误:

"(^p5[0-9].*XYX.*cancer)(?!.*ttt)"
Error in grep(needle, haystack, ...) : invalid regular expression 'mz|(^p5[0-9].*XYX.*cancer)(?!.*ttt)', reason 'Invalid regexp'

抱歉之前不清楚,具体代码是:

ctc_gastric_df <- select(m,matches("mz|(^p5[0-9].*XYX.*cancer)(?!.*ttt)"))

我们需要perl = TRUE使 OP 代码中的正则表达式正常工作

grep("(^p5[0-9].*XYX.*cancer)(?!.*ttt)", strings, perl = TRUE)