我需要在下面的链接中提取“& r =”之后的数字。
http://asdf.com/product/eyewear/eyeglasses?Brand[]=Allen%20Solly&r=472020&ck-source=google-adwords&ck-campaign=eyeglasses-cat-brand-broad&ck-adgroup=eyeglasses-dersdc-cat-brand-broad&keyword={keyword}&matchtype={matchtype}&network={network}&creative={creative}&adposition={adposition}
这是我尝试过的 C将我的链接存储在。
中sub(".*&r=", "",c)
"472020&ck-source=google-adwords&ck-campaign=eyeglasses-cat-brand-broad&ck-adgroup=eyeglasses-dersdc-cat-brand-broad&keyword={keyword}&matchtype={matchtype}&network={network}&creative={creative}&adposition={adposition}"
这只给了我整个字符串的一部分。
我只需要数字472020
。
有什么想法吗?
答案 0 :(得分:1)
以下是使用sub
sub(".*=(\\d+)&.*", "\\1", z)
#[1] "472020"
或
as.integer(sub(".*=(\\d+)&.*", "\\1", z))
#[1] 472020
答案 1 :(得分:1)
我们可以使用str_extract
library(stringr)
as.numeric(str_extract(z, "(?<=\\&r\\=)\\d+"))
#[1] 472020
如果有多个匹配项,请使用str_extract_all
代替str_extract
答案 2 :(得分:1)
为了完整起见,这里是基础R regmatches
/ regexpr
组合:
regmatches(z, regexpr("(?<=\\&r\\=)\\d+",z,perl=TRUE))
它使用与@ akrun的stringr版本相同的Perl风格的正则表达式。 regexpr
(或gregexpr
如果在同一个字符串中预期有相同模式的多个匹配项)匹配模式,而regmatches
提取它(它被向量化,因此可以匹配/提取多个字符串立刻)。
> as.integer(regmatches(z,regexpr("(?<=\\&r\\=)\\d+",z,perl=TRUE)))
#[1] 472020