“忽略最后一个”/&引用;在R正则表达式中

“忽略最后一个”/&引用;在R正则表达式中,r,regex,R,Regex,给定字符串“http://compras.dados.gov.br/materiais/v1/materiais.html?pdm=08275/“,我需要生成一个正则表达式过滤器,以便它忽略最后一个字符,如果它是“/” 我尝试了以下正则表达式”(http:////)?compras\\\.dados\\\.gov\\.br.\\?*(如果要返回不带最后一个/的字符串,可以通过几种方法执行此操作。下面是使用base R的几个选项: 在gsub()中使用back引用(sub()在这里也适用): 通过

给定字符串
“http://compras.dados.gov.br/materiais/v1/materiais.html?pdm=08275/“
,我需要生成一个正则表达式过滤器,以便它忽略最后一个字符,如果它是“/”


我尝试了以下正则表达式
”(http:////)?compras\\\.dados\\\.gov\\.br.\\?*(如果要返回不带最后一个
/
的字符串,可以通过几种方法执行此操作。下面是使用base R的几个选项:

gsub()
中使用back引用(
sub()
在这里也适用):

通过使用
ifelse()
substr()
定位(如果需要缩放,这可能会快一点)

数据

x <- "http://compras.dados.gov.br/materiais/v1/materiais.html?pdm=08275/"

x试试
gsub((.*?/+$”,“\\1”,s)

使用
sub
删除尾随的
/

x <- c("a1bc/", "a2bc")
sub("/$", "", x)

x您可以在结尾处使用负片向后看,以确保它不会以您不想要的字符结尾(在本例中为
/
)。正则表达式将是:

.+(?<!\/)
+(?

您可以使用三个输入示例在此处查看它:。如果您只希望它与url匹配,则可以将开头的
+
部分更改为url正则表达式。

将其用作正则表达式:
(?:http://)?compras\.dados\.gov\.br.*\?[^/]*
这里不需要使用lookbehind。我不完全清楚您要找的是什么——忽略是什么意思?您希望返回时不带最后一个
/
,还是希望它成为搜索模式的可选元素。亲爱的Andrew,我希望返回的字符串不带最后一个“/”。谢谢
grep()
,即使您正确匹配了字符串的一部分,它也将返回原始字符串。例如,
grep(“a”,“abc”,value=T)
Just
grep
gsub(“/+$”,“”,x)
x <- "http://compras.dados.gov.br/materiais/v1/materiais.html?pdm=08275/"
x <- c("a1bc/", "a2bc")
sub("/$", "", x)
.+(?<!\/)