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

Replace some text after a string with Regex and Gsub in R

这是一个简单的问题,但我对 Regex 不是很好。 (我试了很多表达式都没有成功)

我想替换一个模式后的所有文本(什么都不替换)。

我的模式是这样的:

/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 实现?

谢谢

您可以使用以下 sub:

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)

online R demo

详情:

  • ^ - 字符串开头
  • (/canais/[^/]+/) - 第 1 组(稍后称为 </code>)捕获: <ul> <li><code>/canais/ - 子字符串 /canais/
  • [^/]+ - /
  • 以外的 1 个或多个字符
  • / - 斜杠
  • .* - 到字符串末尾的任何 0+ 个字符。