繁体   English   中英

删除R中字符串和括号之间的所有字符

[英]remove all characters between string and bracket in R

假设我有一个数据框df ,其中df $ string列包含类似

[cat 00.04;09]
[cat 00.04;10]

等等。 我想删除“ [cat ”和“]”之间的所有字符以产生

[cat]
[cat]

我已经尝试过使用gsub尝试此操作,但是它不起作用,而且我不确定自己在做什么错:

gsub('cat*?\\]', '', df)

请注意, cat*?\\\\] patten匹配ca ,然后匹配任何0+ t字符,但尽可能少,然后匹配]

你想匹配以外的任何字符]之间[cat]

gsub('\\[cat[^]]*\\]', '[cat]', df$strings)

这里,

  • \\\\[ -匹配[
  • cat -匹配cat
  • [^]]* - 0+比其他字符] (注意]一样,如果你逃避它,你将需要添加-当放置在开始内部支架的表达不应该被转义perl=TRUE ,因为PCRE正则表达式引擎参数可以处理括号表达式中的正则表达式转义(不是默认的TRE)
  • \\\\] -a ] (您甚至不需要转义它,您可以只使用] )。

参见R演示

x <- c("[cat 00.04;09]", "[cat 00.04;10]")
gsub('\\[cat[^]]*\\]', '[cat]', x)
## => [1] "[cat]" "[cat]"

如果cat可以是任何单词,请使用

gsub('\\[(\\w+)[^]]*\\]', '[\\1]', x)

其中(\\\\w+)是ID = 1且与1个或多个单词字符匹配的捕获组,替换模式中的\\\\1是代表组值的替换后向引用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM