我想将DM*13:01:01:02
替换为DM*13:01:01:01
。但是,我的脚本也会将DM*11:01:01:01, DM*03:01:01:01, DM*01:01:01:01
更改为DM*13:01:01:01
。我不希望这些被改变
我使用的脚本:
> papST$DM_c1 <-gsub("[DM*]\\d[13][:]\\d[01][:]\\d[01][:]\\d[02]", "*13:01:01:01", papST$DM_o1, perl = TRUE)
答案 0 :(得分:1)
根据您提供的示例,您并不需要使用任何花哨的正则表达式功能来执行您提到的特定替换。您需要在模式中包含的唯一内容是反斜杠,以便*
不会被视为特殊字符:
x = c("DM*13:01:01:02", "DM*11:01:01:01", "DM*03:01:01:01", "DM*01:01:01:01")
gsub("DM\\*13:01:01:02", "DM*13:01:01:01", x)
如果有更多值需要替换,就像你想要替换以02
结尾的所有值,那么你可能需要在正则表达式中引入一些“模式匹配”功能,但重要的是使事情过于复杂。
作为参考,要替换字符串末尾的所有02
,您可以使用一个使用$
的简单正则表达式,它在字符串的末尾匹配:
gsub("02$", "01", x)