У меня есть текстовая строка, содержащая цифры, буквы и пробелы. Некоторые из его подстрок являются аббревиатурами месяца. Я хочу выполнить замену шаблона на основе условий, а именно заключить аббревиатуру месяца в пробелы тогда и только тогда, когда удовлетворяет заданному условию. В качестве примера, пусть условие будет следующим: «предшествует ди git и следует буква».
Я пробовал stringr
пакет, но мне не удалось объединить функции str_replace_all()
и str_locate_all()
:
# Input:
txt = "START1SEP2 1DECX JANEND"
# Desired output:
# "START1SEP2 1 DEC X JANEND"
# (A) What I could do without checking the condition:
library(stringr)
patt_month = paste("(", paste(toupper(month.abb), collapse = "|"), ")", sep='')
str_replace_all(string = txt, pattern = patt_month, replacement = " \\1 ")
# "START1 SEP 2 1 DEC X JAN END"
# (B) But I actually only need replacements inside the condition-based bounds:
str_locate_all(string = txt, pattern = paste("[0-9]", patt_month, "[A-Z]", sep=''))[[1]]
# start end
# [1,] 12 16
# To combine (A) and (B), I'm currently using an ugly for() loop not shown here and want to get rid of it