2013-08-10 1 views
1

Я пытаюсь создать код html-тега для моего кода в R, и мне трудно найти и заменить цифры цветными номерами.Замена чисел R regular-expression

Я думаю, что следующее в правильном направлении, но я не уверен, что делать:

txt <- gsub("\\<[:digit:]\\>", paste0(num.start,"\\1",num.end) , txt) 

Это не похоже, чтобы сделать работу. В целом, я хотел бы, чтобы все числа, которые не являются частью слов, которые должны быть идентифицированы и заменены тегами до и после номеров, которые изменяют цвет и определяются переменными num.start, num.end.

Например:

num.start <- '<span style="color: #990000"><b>' 
num.end <- '</b></span>' 

Так что я хотел бы иметь возможность кормить в R сказать код и это написать HTML-теги при необходимости.

RCODE:

txt <- "a <- 3945 ; b <- 3453*3942*a" 
gsub("\\<[:digit:]\\>", paste0(num.start,"\\1",num.end) , txt) 
[1] "a <- <span style="color: #990000"><b>3945</b></span> ; b <- <span style="color: #990000"><b>3453</b></span>*<span style="color: #990000"><b>3942</b></span>*a" 

надежда будет то, что я мог бы скопировать измененный код R в HTML-редакторе, например в моем блоге, и все номера будет цветом.

Большое спасибо за любую помощь! Фрэнсис

+8

Пожалуйста, дайте по крайней мере, фрагмент, например, текста и пример вывода что ты хочешь. – A5C1D2H2I1M1N2O1R2T1

+0

И регулярные выражения и HTML обычно не слишком хорошо сочетаются, если ваша структура HTML не является «регулярной» и предсказуемой, что обычно не так. – A5C1D2H2I1M1N2O1R2T1

+2

Кроме того, вы не предоставляете 'gsub' ничего для обратной ссылки. Вам понадобится что-то в строках 'gsub (". * ([[: Digit:]] +). * ", ...)', чтобы сделать '\\ 1 означать что-либо. – A5C1D2H2I1M1N2O1R2T1

ответ

1

Это сделает работу, хотя я не рекомендую использовать регулярные выражения с HTML:

gsub("(\\d+)", paste0(num.start,"\\1",num.end) , txt) 

Результат:

[1] "a <- <span style=\"color: #990000\"><b>3945</b></span> ; b <- <span style=\"color: #990000\"><b>3453</b></span>*<span style=\"color: #990000\"><b>3942</b></span>*a"