如何使用 string_replace() 进行包含方括号的替换?

问题描述 投票:0回答:1

我有一个包含两个元素的向量:

xx <- c("K[Phenylisocyanate (N-term)]SAPATGGVKKPHR", "A[Phenylisocyanate (N-term)]SAPATGGVKKPHR")

我想将“[苯基异氰酸酯(N-term)]”替换为“[苯基异氰酸酯_丙酰基(Nterm)]”,但前提是要替换的部分(“[苯基异氰酸酯(N-term)]”)前面有“ K”,即仅在第一个元素中

所以我想得到 c("K[Phenylisocyanate_Propionyl (Nterm)]SAPATGGVKKPHR", "A[Phenylisocyanate (N-term)]SAPATGGVKKPHR").

执行此替换

str_replace (xx,  "K[Phenylisocyanate (N-term)]", "K[Phenylisocyanate_Propionyl (Nterm)]")

导致非常意外的行为:

[1]“K[苯基异氰酸酯_丙酰基(N 项)]苯基异氰酸酯(N 项)]SAPATGGVKKPHR”

[2]“A[异氰酸苯酯(N-末端)]SAPATGGVKK[异氰酸苯酯_丙酰基(N-末端)]HR”

你能否解释一下我应该如何编写这个替换以及为什么我得到这个奇怪的结果?

r stringr
1个回答
0
投票

出现上述结果的原因是

[
]
是正则表达式中的元字符,它们的意思是“匹配方括号内出现的任何字符”。

为了解决这个问题,您可以使用

fixed()
函数告诉 R 该模式不是正则表达式。

str_replace(xx,  fixed("K[Phenylisocyanate (N-term)]"), "K[Phenylisocyanate_Propionyl (Nterm)]")
© www.soinside.com 2019 - 2024. All rights reserved.