#r #regex #string
#r #регулярное выражение #строка
Вопрос:
Я хотел бы вставлять символы в тех местах, где строка меняет свой регистр. Я попытался вставить ‘ n’ после фиксированного количества символов, а затем ‘ ‘, поскольку я не понимаю, как определить изменение регистра
s <-c("FloridaIslandE7", "FloridaIslandE9", "Meta")
gsub('^(.{7})(.{6})(.*)$', '\1\n\2 \3', s )
[1] "FloridanIsland E7" "FloridanIsland E9" "Meta"
Это работает, потому что позиции фиксированы, но я хотел бы знать, как это сделать для общего случая.
Ответ №1:
Конечно, для этого есть менее запутанный regex
способ, но вы могли бы попробовать:
gsub('([A-Z][0-9])', ' \1', gsub('([a-z])([A-Z])', '\1n\2', s))
Вывод:
[1] "FloridanIsland E7" "FloridanIsland E9" "Meta"
Ответ №2:
Вот вариант
str_replace_all(s, "(?<=[a-z])(?=[A-Z])", "n")
#[1] "FloridanIslandnE7" "FloridanIslandnE9" "Meta"
Ответ №3:
Если вы действительно хотите вставить n
, попробуйте это:
gsub("([a-z])([A-Z])", "\1\n\2", s)
[1] "FloridanIslandnE7" "FloridanIslandnE9" "Meta"