В вашем шаблоне [[a-z]]+
является искаженным выражением в скобках, поскольку оно соответствует любому символу из выражения [[a-z]
в скобках (любая строчная буква ASCII или [
), а затем соответствует одному или нескольким ]
символам. Вы хотели использовать одиночные [
и ]
здесь.
Вы можете использовать sub
со следующим регулярным выражением:
sub(".*[&?]utm_campaign=([^&]+).*", "\\1", s)
См. Демоверсию regex .
Детали
.*
- любые 0+ символов, как можно больше
[&?]
- ?
или &
utm_campaign=
- буквальная подстрока
([^&]+)
- Группа захвата 1: один или несколько символов, отличных от &
символов
.*
- любые 0+ символов, как можно больше
\1
- это обратная обратная ссылка, которая помещает содержимое группы 1 в результат.
См. Демоверсию R :
s <- "xxx/yyy?utm_medium=display&utm_source=ogury&utm_campaign=TOTO&zzz=coco"
sub(".*[&?]utm_campaign=([^&]+).*", "\\1", s)
## => [1] "TOTO"