“如何替换”|&引用;在R
我有一个包含 “HYD_SOA_UNBLOCK~SOA_BLOCK-UK | SOA_BLOCK-DE | SOA_BLOCK-FR | SOA_BLOCK-IT | SOA_BLOCK-ES |” 我希望结果是- “HYD_SOA_UNBLOCK~SOA_BLOCK-UK | SOA_BLOCK-DE | SOA_BLOCK-FR | SOA_BLOCK-IT | SOA_BLOCK-ES |” 我试过:“如何替换”|&引用;在R,r,gsub,R,Gsub,我有一个包含 “HYD_SOA_UNBLOCK~SOA_BLOCK-UK | SOA_BLOCK-DE | SOA_BLOCK-FR | SOA_BLOCK-IT | SOA_BLOCK-ES |” 我希望结果是- “HYD_SOA_UNBLOCK~SOA_BLOCK-UK | SOA_BLOCK-DE | SOA_BLOCK-FR | SOA_BLOCK-IT | SOA_BLOCK-ES |” 我试过: leadtemp$collate = gsub("||","|",leadtemp$co
leadtemp$collate = gsub("||","|",leadtemp$collate)
但它不起作用
请帮助我按照Flick先生的建议,将“| |”替换为“|”,在gsub语句中包含fixed=TRUE。出现此问题的原因是“|”是正则表达式运算符。使用fixed=TRUE告诉gsub假定模式是字符串而不是正则表达式
leadtemp$collate = gsub("||","|",leadtemp$collate, fixed=TRUE)
另一种(尽管更复杂)的方法是避开所有的障碍:
leadtemp$collate = gsub("\\|\\|","\\|",leadtemp$collate)
|
是元字符。如您所知,元字符需要通过\
转义出来<代码>\也是元字符,因此必须以相同的方式将其转义。因此,每当您想在字符串中引用\\
时,必须将\\\\\\\\
放入字符串中。这将使您的代码正常工作:
leadtemp$collate = gsub("\\|\\|","\\|",leadtemp$collate)
尝试:
我定义了包含管道字符的字符类,并强制gsub查找两个匹配项。结果是:
"HYD_SOA_UNBLOCK~SOA_BLOCK-UK|SOA_BLOCK-DE|SOA_BLOCK-FR|SOA_BLOCK-IT|SOA_BLOCK-ES|"
只需将
fixed=TRUE
添加到您的gsub()
。
"HYD_SOA_UNBLOCK~SOA_BLOCK-UK|SOA_BLOCK-DE|SOA_BLOCK-FR|SOA_BLOCK-IT|SOA_BLOCK-ES|"