使用文本操作从下面提到的A中获取B列

时间:2016-02-03 06:59:36

标签: r

   A                                                     B
   paytm?r=498472&ck-source=wsas-asfdww             498472
   paytm-clothing/r=498473&ck-source=wsas-sdfasd     498473
   paytm-cloths&r=4984&ck-source=wsas-sdfd            4984     

需要在?r =,/ r =或& r =之后返回数字 可以是四到六位数字,并遵循上述任何一种模式。

1 个答案:

答案 0 :(得分:3)

我们可以使用str_extract中的stringr。我们匹配=后面的数字模式并将其提取出来。

library(stringr)
as.numeric(str_extract(df1$A, "(?<=\\=)\\d+"))
#[1] 498472 498473   4984

如果需要具体(如帖子中所述),我们可以匹配?r= /r=&r=

后面的数字
 as.numeric(str_extract(df1$A, "(?<=(\\?|\\/|\\&)r\\=)\\d+"))
 #[1] 498472 498473   4984

或者将sub与捕获组一起使用。

 as.numeric(sub('.*(\\?|\\/|\\&)r\\=(\\d+).*', '\\2', df1$A))
 #[1] 498472 498473   4984