我必须更换"用作字符串中的度量单位(英寸),也包含双引号中的字符。
uuuu<- c('BELT, "V" 5L610, LONG 4.5" WIDE 7.5", TYPE "K"')
我的数据中的向量有70k +行,我只需要担心&#34;在数字之后。
我想要的结果是 - BELT, "V" 5L610, LONG 4.5IN WIDE 7.5IN, TYPE "K"
我试过gsub('\\d\"',"\\dIN",uuuu)
,但你知道我不会给我正确的结果:"BELT, \"V\" 5L610, LONG 4.dIN WIDE 7.dIN, TYPE \"K\"
然后我尝试grep来找到模式并得到索引,然而,这似乎并不合理,因为向量中的单个字符串可能同时具有&#34;作为UOM和引用。 grep('\\d\"',uuuu,value = FALSE)
如何保留模式中的数字?它应该可以在gsub?
答案 0 :(得分:1)
您可以在替换后需要保留的模式部分周围使用capturing group(一对非转义括号),并在替换模式中使用backreference组值:
gsub('(\\d)"', "\\1IN", uuuu)
^ ^ ^^^
请参阅regex demo。
模式详情
(\d)
- 捕获第1组(其值可以使用替换模式中的\1
反向引用引用):任何数字"
- 双引号。uuuu<- c('BELT, "V" 5L610, LONG 4.5" WIDE 7.5", TYPE "K"')
cat(gsub('(\\d)"', "\\1IN", uuuu))
## => BELT, "V" 5L610, LONG 4.5IN WIDE 7.5IN, TYPE "K"