Не включать в период gsub в конце предложения - PullRequest
1 голос
/ 25 марта 2020

Я пытаюсь сделать gsub в R, чтобы заменить все числа (например: $ 1.48, 1765, 87) стрелками вокруг него. (<>, << 1,765 >>, << 87 >>)

Вот мой текущий gsub:

text <- c («Примеры чисел: один и два, 3, 1284 и пятьдесят девять. "," Этот ледяной всплеск стоит $ 1,48. ") </p>

subbedNum<-gsub("\\b([$0-9.,]+)\\b", "<<\\1>>", text)

, однако в результате он также помещает стрелки вокруг точки в конце предложения и не имеет $ в стрелках:

[1]  "My favorite numbers are  <<8>>, <<3,289>> and <<4>><<.>>"
[2]  "This book costs $<<1.48.>>"

ожидаемый результат:

[1,]"My favorite numbers are  <<8>>, <<3,289>> and <<4>>."
[2,]  "This book costs <<$1.48>>."

Как я могу изменить это?

1 Ответ

1 голос
/ 25 марта 2020

Вместо границы слова (которая может иметь некоторые крайние значения), мы можем захватить цифры, следующие за любой не-ди git, за которой следуют либо точка, либо запятая, и одна или несколько цифр. При замене используйте обратную ссылку захваченной группы и отформатируйте ее как <<>>

gsub("[^$0-9.,]([$0-9]+([.,][0-9]+)?)\\b", "<<\\1>>", text)
#[1] "Examples of numbers are one and two,<<3>>,<<1,284>> and fifty nine."
#[2] "This ice pop costs<<$1.48>>."  

data

text<-c( "Examples of numbers are one and two, 3, 1,284 and fifty nine.", "This ice pop costs $1.48.") 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...