![](/img/trans.png)
[英]How can I remove all characters between two other recurring characters in a string using 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.