“忽略最后一个”/&引用;在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)
Justgrep
gsub(“/+$”,“”,x)
x <- "http://compras.dados.gov.br/materiais/v1/materiais.html?pdm=08275/"
x <- c("a1bc/", "a2bc")
sub("/$", "", x)
.+(?<!\/)