RegEx для добавления подчеркивания перед заглавными буквами - PullRequest
3 голосов
/ 14 мая 2019

Как добавить подчеркивание (_) перед заглавными буквами в строке, кроме первой?

[1] "VarLengthMean" "VarWidthMean" 

Я хочу, чтобы оно стало:

[1] "Var_Length_Mean" "Var_Width_Mean" 

Я подумал об использовании str_replace_all из stringr, но не могу понять, какое регулярное выражение мне следует использовать.

Как мне решить эту проблему?

Ответы [ 3 ]

5 голосов
/ 14 мая 2019

Один из вариантов - захватить строчную букву и следующую заглавную букву, а затем вставить _ при добавлении обратной ссылки (\\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")
1 голос
/ 14 мая 2019

Если ваш язык поддерживает утверждения, это все, что вам нужно

Найти (?<=[a-z])(?=[A-Z])
Заменить _

0 голосов
/ 14 мая 2019

Или:

str_replace_all(v, "\\B([A-Z]+)", "_\\1")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...