R demo

问题描述 投票:1回答:1
If you must match the whole pattern, you could use a capturing group and use anchors to assert the start

and the end

L_1_3
L_2_23
L_3_91
L_3_16

of the string and use the group in the replacement.

3
23
91
16

In partscolnames(X) <- gsub("L_\\d\\d_", "", colnames(X))^ Start of stringL_ Match L_\d Match a digit\d? Match a digit and repeat 0 or 1 times_ Match _( Capture group 1 \d+ Match a digit and repeat 1 or more times) Close group$ End of string

Regex demo

r regex replace names
1个回答
10
投票

我试过

gsub(".+_(?=\\d+$)", "", X, perl = TRUE)
[1] "3"  "23" "91" "16"
它适用于尾部有两位数的字符串。我想要一个既能用在单数又能用在双数的字符串上的。

5
投票

?

L_\\d\\d?_

我有一堆colnames L_1_3 L_2_23 L_3_91 L_3_16,我想用新的名字替换这些colnames,使用_后面的最后一位数字,就像这样。3 23 91 16 我试过colnames(X) 这里有一个正数看前的选项。


^ $如果这就是你的2位数的模式, 你唯一要做的就是把其中一个数字变成可选的,使用...

^L_\\d\\d?_(\\d+)$

Regex演示

 
© www.soinside.com 2019 - 2024. All rights reserved.