在R中用Regex和Gsub替换字符串后面的一些文本

在R中用Regex和Gsub替换字符串后面的一些文本,r,regex,gsub,R,Regex,Gsub,这是一个简单的问题,但我不擅长正则表达式。(我尝试了许多表达,但都没有成功) 我想替换模式后的所有文本(无需替换) 我的模式是这样的: /canais/*/ 我的数据是: /canais/b3/conheca-o-pai-dos-indices-da-b3/ /canais/cpbs/cvm-abre-audiencia-publica-de-instruc /canais/stocche-forbes/dividendo-controverso/ 预期的结果是: /canais/b3/ /

这是一个简单的问题,但我不擅长正则表达式。(我尝试了许多表达,但都没有成功)

我想替换模式后的所有文本(无需替换)

我的模式是这样的:

/canais/*/
我的数据是:

/canais/b3/conheca-o-pai-dos-indices-da-b3/
/canais/cpbs/cvm-abre-audiencia-publica-de-instruc
/canais/stocche-forbes/dividendo-controverso/
预期的结果是:

/canais/b3/
/canais/cpbs/
/canais/stocche-forbes/
我怎样才能用gsub做到这一点


谢谢

您可以使用以下
子项

x <- c("/canais/b3/conheca-o-pai-dos-indices-da-b3/","/canais/cpbs/cvm-abre-audiencia-publica-de-instruc","/canais/stocche-forbes/dividendo-controverso/")
sub("^(/canais/[^/]+/).*", "\\1", x)

x
dirname(txt)
也许吧?非常感谢Wiktor。很好!谢谢你的解释,在其他情况下会有帮助。我在数据中有一些行有
/category/canais/name/
,然后我做了一点修改:
gsub(.*(/canais/[^/]+/)*,“\\1”,x)
@diegagaona:我会使用a.
*
*?
之间有什么区别?第一个选项在我的测试中也能工作,但在某些情况下可能会出错。。。我不知道。
*?
匹配尽可能少的字符,直到后续子模式第一次出现<代码>*
尽可能多地匹配,直到最后出现的后续子模式。