R - gsub 特定位置的特定字符

gia*_*iac 5 regex position r gsub

我想删除变量的最后一个字符。我想知道是否可以选择位置gsub并删除该特定位置的字符。

在这个例子中,我想删除最后一个数字,在 , 之后E,为我的 4 个变量。

variables = c('B10243E1', 'B10243E2', 'B10243E3', 'B10243E4')
gsub(pattern = '[[:xdigit:]]{8}.', replacement = '', x = variables)
Run Code Online (Sandbox Code Playgroud)

我以为我们可以使用命令

{}
Run Code Online (Sandbox Code Playgroud)

为了选择一个特定的位置。

Wik*_*żew 4

您可以通过捕获除最后一个字符之外的所有字符来完成此操作:

variables = c('B10243E1', 'B10243E2', 'B10243E3', 'B10243E4')
gsub('^(.*).$', '\\1', variables)
Run Code Online (Sandbox Code Playgroud)

解释:

  • ^- 字符串的开头
  • (.*)- 除换行符外的所有字符
  • .$.-字符串 ( ) 末尾之前的最后一个字符(用 捕获) $

因此,如果您打算删除最后一个字符,并且字符串不包含换行符,则可以很好地使用此正则表达式。

查看演示

输出:

[1] "B10243E" "B10243E" "B10243E" "B10243E"  
Run Code Online (Sandbox Code Playgroud)

T仅替换第 8 个字符(这是我在每个项目末尾添加的示例):

variables = c('B10247E1T', 'B10243E2T', 'B10243E3T', 'B10243E4T')
gsub('^(.{7}).', '\\1', variables)
Run Code Online (Sandbox Code Playgroud)

示例程序的输出(不在ET每一项末尾,数字被删除):

[1] "B10247ET" "B10243ET" "B10243ET" "B10243ET" 
Run Code Online (Sandbox Code Playgroud)