修改正则表达式以排除开头出现的字符

时间:2017-10-29 11:32:35

标签: r regex

使用下面的代码我提取生成的html链接:

mystr <- c("/url?q=http://www.mypage.html&sa=U&ved=0ahUKEwjgyMPj2pXXAhWB5CYKHXysDlsQqQIIKSgAMAg&usg=AOvVaw1VCvT8iznodM3l4xvc8CVq")

str_extract(mystr, "^.*(?=(&sa))") 

返回:

[1] "/url?q=http://www.mypage.html"

如何修改正则表达式以排除/url?q=?那么只返回http://www.mypage.html吗?

2 个答案:

答案 0 :(得分:1)

您可以将字符串的开头(即^)替换为http

stringr::str_extract(mystr, "http.*(?=(&sa))") 
#[1] "http://www.mypage.html"

答案 1 :(得分:1)

您还可以使用基本R md-unwind-support.h解决方案与第一个int std::uncaught_exceptions() should have been declared inside 'std' 匹配,并使用sub以外的任何chrsrs捕获它:

http

您可以在& aftrr sub(".*?(http[^&]*).*", "\\1", x) 之后精确匹配模式。

<强>详情

  • q= - 尽可能少的0个字符,
  • .*? - 捕获与.*?匹配的第1组,然后捕获(http[^&]*)以外的任何零个或多个字符
  • http - 字符串的其余部分。

&是对第1组值的替代反向引用。