У меня есть текст, в котором люди используют капиталы с пробелами между ними, чтобы сделать выдачу подстроки. Я хочу заменить пробелы между этими подстроками. Правила для шаблона: "по крайней мере 3 последовательных заглавных буквы с пробелом между каждой буквой".
Мне любопытно, как это сделать с чистым регулярным выражением, но также с пакетом gsubfn, поскольку я думал, что это будет легкой задачей для него, но в примере MWE ниже я разбился и сжег, когда там было добавлено дополнительное письмо (I Любопытно, почему это происходит).
MWE
x <- c(
'Welcome to A I: the best W O R L D!',
'Hi I R is the B O M B for sure: we A G R E E indeed.'
)
## first to show I have the right regex pattern
gsub('(([A-Z]\\s+){2,}[A-Z])', '<FOO>', x)
## [1] "Welcome to A I: the best <FOO>!"
## [2] "Hi I R is the <FOO> for sure: we <FOO> indeed."
library(gsubfn)
spacrm1 <- function(string) {gsub('\\s+', '', string)}
gsubfn('(([A-Z]\\s+){2,}[A-Z])', spacrm1, x)
## Error in (function (string) : unused argument ("L ")
## "Would love to understand why this error is happening"
spacrm2 <- function(...) {gsub('\\s+', '', paste(..., collapse = ''))}
gsubfn('(([A-Z]\\s+){2,}[A-Z])', spacrm2, x)
## [1] "Welcome to A I: the best WORLDL!"
## [2] "Hi I R is the BOMBM for sure: we AGREEE indeed."
## "Would love to understand why the extra letter is happening"
Желаемый выход
[1] "Welcome to A I: the best WORLD!"
[2] "Hi I R is the BOMB for sure: we AGREE indeed."