在最后一次删除部分字符串" /"

时间:2016-07-28 11:24:09

标签: regex r

我想删除/ query之前的所有内容...例如

我不知道正则表达式所以这样做对我来说很难

注意:引用应为/query,因为下面提到的链接可能有一些不同的模式,例如 - www.abcd.wsd/asd/asdcd/asrr/query=xyz

www.html.com/query=abcd

应该导致

 query = abcd

4 个答案:

答案 0 :(得分:2)

我们可以滥用基本名称功能,它旨在获取文件名,删除所有文件夹:

basename("www.abcd.wsd/asd/asdcd/asrr/query=xyz")
# [1] "query=xyz"

basename("www.html.com/query=abcd")
# [1] "query=abcd"

请注意,当query不在最后时,这将失败:

basename("www.html.com/query=abcd/xyz")
# [1] "xyz"

答案 1 :(得分:1)

一个通用的正则表达式解决方案,用于提取在query之后出现的/,后面跟着/以外的字符

s <- c("www.abcd.wsd/asd/asdcd/asrr/query=xyz","www.html.com/query=abcd","www.cmpnt.com/query=fgh/noquery=dd")
sub("^.*/(query[^/]*).*$", "\\1", s)
## => "query=xyz"  "query=abcd" "query=fgh"

请参阅this R demo

正则表达式是

^.*/(query[^/]*).*$

请参阅regex demo

<强>详情:

  • ^ - 字符串开头
  • .* - 尽可能多地匹配任意0个字符,直到最后一个
  • / - 一个字面的正斜杠字符
  • (query[^/]*) - 捕获与query子字符串匹配的组1,后跟除/以外的0 +字符(请参阅带有[^/]*量词的*否定字符类)
  • .* - 零个或多个任何字符
  • $ - 字符串的结尾。

答案 2 :(得分:1)

另一种选择是:

sub('.*/query', '/query', 'www.html.com/query=abcd')

,即替换&#34;所有字符,包括[查询的最后一个实例] /查询&#34;使用&#34; / query&#34;。

答案 3 :(得分:0)

string<-c('www.abcd.wsd/asd/asdcd/asrr/query=xyz','www.html.com/query=abcd')
gsub('.*\\/([^/]+)$','\\1',string)
#[1] "query=xyz"  "query=abcd"