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)
为了选择一个特定的位置。
您可以通过捕获除最后一个字符之外的所有字符来完成此操作:
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)