R regex gsub отдельные буквы и цифры

у меня есть строка, которая смешивает буквы и цифры:

"The sample is 22mg"

Я хотел бы разделить строки, где число сразу же следует буква, как это:

"The sample is 22 mg"

Я попытался это:

gsub('[0-9]+[[aA-zZ]]', '[0-9]+ [[aA-zZ]]', 'This is a test 22mg')

но я не получаю желаемого результата.

какие предложения?

2 ответов


вам нужно использовать скобки захвата в регулярном выражении и групповые ссылки в замене. Например:

gsub('([0-9])([[:alpha:]])', '\1 \2', 'This is a test 22mg')

здесь нет ничего R-специфического; помощь R для regex и gsub должно быть полезно.


вам нужно backreferencing:

test <- "The sample is 22mg"
> gsub("([0-9])([a-zA-Z])","\1 \2",test)
[1] "The sample is 22 mg"

запоминается все, что указано в скобках. Затем к ним обращается \1 (для первого объекта в parens), \2 и т. д. Первая обратная косая черта избегает интерпретации обратной косой черты в R, чтобы она передавалась синтаксическому анализатору регулярных выражений.