在 R 中用正则表达式和 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/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)

查看在线 R 演示

详情

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

最新更新