Delete except when there is a keyword

1

I try to delete all the numbers in the text, except if they are preceded by the word hospital .

I have:

data<-c("3l hospital 11 esta a la vu3lt4")

data<- gsub("\b(?![hospital])\s[0-9]|[0-9]", "",  data, perl = T)

and my result is:

 "l hospital esta a la vult"

Expected result:

 "l hospital 11 esta a la vult"
    
asked by Max TC 12.01.2018 в 05:16
source

1 answer

2

The solution is to match and capture any exception in a group, or match without capturing what you want to delete:

(excepción 1|excepción 2|etc.)|lo que quiero eliminar

replacing what was captured: .


Code:

data <- c("3l hospital 11 esta a la vu3lt4")

data <- gsub("(hospital\s+\d+)|\d+", "\1",  data, perl = T)


Result:

[1] "l hospital 11 esta a la vult"


Demo: link


Alternatively, if you prefer to use the control verbs (*SKIP)(*FAIL) :

excepción(*SKIP)(*FAIL)|lo que quiero eliminar


Code:

data <- c("3l hospital 11 esta a la vu3lt4")
data <- gsub("hospital\s+\d+(*SKIP)(*FAIL)|\d+", "",  data, perl = T)

Demo: link

    
answered by 12.01.2018 / 07:15
source