как использовать gsub() для удаления сложных строковых шаблонов

У меня была таблица данных, которая выглядит следующим образом:

| _ - 9 | PR - Very happy with results. | Improvement - Be more clear regarding how the entire process works. I.e. how long you have to wait for your account to become active. | Churn Reason - none"  

Я пытаюсь удалить | Improvement...| из каждой строки, если она есть. Я написал это как

feedback <- gsub("| Improvement*|", "",data$Feedback,  ignore.case = FALSE, perl = TRUE)

Но это ничего не делает. Кто-нибудь может помочь мне с этим?


person user3754216    schedule 20.06.2014    source источник


Ответы (1)


Вам нужно экранировать символы вертикальной черты |, потому что они интерпретируются как ИЛИ. Вам также понадобится ., чтобы квантификатор * применялся к нему. Наконец, хотя это не имеет значения для этого примера, вам, вероятно, нужна нежадная версия *, чтобы вы не собирали более одного поля.

Feedback = "| _ - 9 | PR - Very happy with results. | Improvement - Be more clear regarding how the entire process works. I.e. how long you have to wait for your account to become active. | Churn Reason - none"  
feedback <- gsub("\\| Improvement.*?\\|", "", Feedback,  ignore.case = FALSE, perl = TRUE)
print(feedback)

Выход:

"| _ - 9 | PR - Very happy with results.  Churn Reason - none"
person merlin2011    schedule 20.06.2014