在 R 中使用 gsub 部分替换字符串中的正则表达式模式?
Partially replace regex pattern in string using gsub in R?
我必须替换字符串中用作度量单位(英寸)的 ",这些字符串也包含双引号中的字符。
uuuu<- c('BELT, "V" 5L610, LONG 4.5" WIDE 7.5", TYPE "K"')
我数据中的矢量有 70k+ 行,我只需要担心数字后面的 "。
我想要的结果是 - 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 来查找模式并获取索引,但是,这似乎并不合理,因为向量中的单个字符串可能同时具有 " 作为 UOM 和引号。grep('\d\"',uuuu,value = FALSE)
如何保留图案中的数字?在 gsub 中应该可以吗?
您可以对替换模式中的组值使用 capturing group (a pair of unescaped parentheses) around the part of the pattern you need to keep after replacement and a backreference:
gsub('(\d)"', "\1IN", uuuu)
^ ^ ^^^
参见regex demo。
图案详情
(\d)
- 捕获组 1(其值可以通过替换模式中的 </code> 反向引用来引用):任何数字</li>
<li><code>"
- 双引号。
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"
我必须替换字符串中用作度量单位(英寸)的 ",这些字符串也包含双引号中的字符。
uuuu<- c('BELT, "V" 5L610, LONG 4.5" WIDE 7.5", TYPE "K"')
我数据中的矢量有 70k+ 行,我只需要担心数字后面的 "。
我想要的结果是 - 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 来查找模式并获取索引,但是,这似乎并不合理,因为向量中的单个字符串可能同时具有 " 作为 UOM 和引号。grep('\d\"',uuuu,value = FALSE)
如何保留图案中的数字?在 gsub 中应该可以吗?
您可以对替换模式中的组值使用 capturing group (a pair of unescaped parentheses) around the part of the pattern you need to keep after replacement and a backreference:
gsub('(\d)"', "\1IN", uuuu)
^ ^ ^^^
参见regex demo。
图案详情
(\d)
- 捕获组 1(其值可以通过替换模式中的</code> 反向引用来引用):任何数字</li> <li><code>"
- 双引号。
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"