Вы также можете использовать внешний вид обходные, если есть некоторые случаи, когда вы хотите, чтобы отделить цифры от «Я», скажем, а не иначе:
text="blablabla 400ft blablabla 400notft"
gsub('(?<=\\d)(?=ft)', ' ', text, perl = TRUE)
# [1] "blablabla 400 ft blablabla 400notft"
в отличие от gsub('([0-9]+)([^0-9]+)', '\\1 \\2', text)
который отделит независимо от того, что происходит следующая:
gsub('([0-9]+)([^0-9]+)', '\\1 \\2', text)
# [1] "blablabla 400 ft blablabla 400 notft"
и вы также можете использовать другие условия:
text="blablabla 400ft blablabla 400notft blablabla 400in"
gsub('(?<=\\d)(?=ft|in)', ' ', text, perl = TRUE)
# [1] "blablabla 400 ft blablabla 400notft blablabla 400 in"
или сказать вам необходимо добавить пробелы между буквами и цифрами при сохранении правил выше:
text2 <- 'blblabla 400ft blablaba400ft 400 blabla 400notft blah400notft'
gsub('(?<=[A-Za-z])(?=\\d+)|(?<=\\d)(?=ft|in)', ' ', text2, perl = TRUE)
# [1] "blblabla 400 ft blablaba 400 ft 400 blabla 400notft blah 400notft"
По вашему описанию вы ищете 'GSUB («([0-9] +)»,«\\ 1», текст) ', хотя он всегда будет добавлять пространство спереди и сзади, даже если это не нужно. –
Правильно, в случае чисел, которые уже отделены от текста. Я всегда могу снять лишнее пространство позже. – Antoine