Я столкнулся с проблемой, которая кажется простой, но решение, которое я нашел, не удовлетворяет. Я хочу заменить любую точку, за которой следует число, запятой. Например,
strings <- c("22.222.222", "12.323", "don.t replace")
будет успешно трансформирован как
[1] "22,222,222" "12,323" "don.t replace"
Первое решение, которое я попытался, было
str_replace_all(strings,
"(?<=\\d+)\\.",
",")
но я получил следующее сообщение об ошибке:
Error in stri_replace_all_regex(string, pattern, replacement, vectorize_all = vec, :
Look-Behind pattern matches must have a bounded maximum length. (U_REGEX_LOOK_BEHIND_LIMIT)
Когда я использую
str_replace_all(strings,
"(?<=\\d{1,3})\\.",
",")
Я получаю правильное преобразование. Однако жестко запрограммированные цифры 1-3 - это не то, что мне нужно, и я не понимаю, почему \\d+
не работает, а \\d{1,3}
работает.
"(?<=\\d)\\."
недостаточно хорошо? - person sgibb   schedule 08.03.2016