我正在尝试使用r从谷歌链接中提取一个UTM,但是我的正则表达式似乎不能正常工作。
下面是一个google链接的例子:
xxx/yyy?utm_medium=display&utm_source=ogury&utm_campaign=TOTO&zzz=coco我尝试了以下正则表达式来提取TOTO:
.+&utm_campaign=([[a-z]]+)&.+但没有成功。
如果有人能帮上忙,谢谢!
发布于 2018-06-28 04:38:41
在您的模式中,[[a-z]]+是一个格式错误的括号表达式,因为它匹配[[a-z]括号表达式中的任何字符(任何小写ASCII字母或[),然后匹配一个或多个]字符。你的意思是在这里使用单一的[和]。
您可以使用带有以下正则表达式的sub:
sub(".*[&?]utm_campaign=([^&]+).*", "\\1", s)请参阅regex demo。
详细信息
.* -任何字符,与possible[&?]一样多-a 0+或.*-一个文字字符捕获组1:除& chars.*之外的一个或多个字符-任何0+字符,尽可能多的\1是将组1的内容放入结果中的替换反向引用。
请参阅R demo
s <- "xxx/yyy?utm_medium=display&utm_source=ogury&utm_campaign=TOTO&zzz=coco"
sub(".*[&?]utm_campaign=([^&]+).*", "\\1", s)
## => [1] "TOTO"发布于 2018-06-28 04:37:45
发布于 2018-06-28 04:38:29
您正在搜索[[a-z]]+,但是TOTO是大写的,所以不是在'a‘和'z’之间。您可以将其更新为[[A-Za-z]]+以匹配任何大小写字母。
编辑: [[A-Za-z]]+将匹配任何大小写字母,但也将匹配任何'‘或'’字符。如果您不希望匹配这些字母,则可以将其更改为[A-Za-z]+,以便只匹配任何大小写字母
https://stackoverflow.com/questions/51070959
复制相似问题