Вот еще один вариант.
gsub("(?<=\\.\\d{2})(?!%)", " ", "$28.00$25.0518.09%", perl = TRUE)
# [1] "$28.00 $25.05 18.09%"
Мы имеем положительный взгляд (?<=\\.\\d{2})
, ищем точку и две цифры, и отрицательный прогноз (?!%)
для%.
В более общем смысле, я думаю, у вас также может быть "$ 28,00 $ 25,0518,09% 18,09%", и в этом случае нам нужно что-то еще:
gsub("((?<=\\.\\d{2})|(?<=%))(?=[\\d$])", " ", "$28.00$25.0518.09%18.09%", perl = TRUE)
# [1] "$28.00 $25.05 18.09% 18.09%"
Теперь у нас есть либо положительный взгляд за точкой и двумя цифрами, либо положительный взгляд за%, а также положительный взгляд на цифру или конец символа.
Если я правильно понимаю, что ваша общая проблема имеет вид «$ 28,00 $ 25,0518,09% -7,10% $ 25,05 $ 25,05 $ 25,05», то мы можем использовать почти то же решение, что и последнее:
gsub("((?<=\\.\\d{2})|(?<=%))(?=[\\d$-])", " ", "$28.00$25.0518.09%-7.10%$25.05-$25.05$25.05", perl = TRUE)
# [1] "$28.00 $25.05 18.09% -7.10% $25.05 -$25.05 $25.05"