用于在大写字母前添加下划线的正则表达式
RegEx for adding underscore before capitalized letters
如何在字符串中的大写字母前添加下划线 (_),第一个字母除外?
[1] "VarLengthMean" "VarWidthMean"
我希望它变成:
[1] "Var_Length_Mean" "Var_Width_Mean"
我考虑过使用 stringr
中的 str_replace_all
,但我不知道应该使用哪个正则表达式。
如何解决这个问题?
一个选项是捕获小写字母和后面的大写字母,然后插入 _
,同时添加反向引用(\1
、\2
)捕获组
sub("([a-z])([A-Z])", "\1_\2", v1)
#[1] "Var_Length" "Var_Width"
如果实例较多,使用gsub
gsub("(?<=[a-z])(?=[A-Z])", "_", v2, perl = TRUE)
#[1] "Var_Length_Mean" "Var_Width_Mean"
数据
v1 <- c("VarLength", "VarWidth" )
v2 <- c("VarLengthMean", "VarWidthMean")
或者:
str_replace_all(v, "\B([A-Z]+)", "_\1")
如果您的语言支持断言,这就是您所需要的
找到(?<=[a-z])(?=[A-Z])
替换 _
如何在字符串中的大写字母前添加下划线 (_),第一个字母除外?
[1] "VarLengthMean" "VarWidthMean"
我希望它变成:
[1] "Var_Length_Mean" "Var_Width_Mean"
我考虑过使用 stringr
中的 str_replace_all
,但我不知道应该使用哪个正则表达式。
如何解决这个问题?
一个选项是捕获小写字母和后面的大写字母,然后插入 _
,同时添加反向引用(\1
、\2
)捕获组
sub("([a-z])([A-Z])", "\1_\2", v1)
#[1] "Var_Length" "Var_Width"
如果实例较多,使用gsub
gsub("(?<=[a-z])(?=[A-Z])", "_", v2, perl = TRUE)
#[1] "Var_Length_Mean" "Var_Width_Mean"
数据
v1 <- c("VarLength", "VarWidth" )
v2 <- c("VarLengthMean", "VarWidthMean")
或者:
str_replace_all(v, "\B([A-Z]+)", "_\1")
如果您的语言支持断言,这就是您所需要的
找到(?<=[a-z])(?=[A-Z])
替换 _