首页 > 解决方案 > 匹配 gsub 模式中的下一个符号

问题描述

有一个看起来像这样的简化示例字符串:

string = "AA: 1%, BB: 2%, CC: 3%, DD: 4% and EE: 5%."

我想通过匹配模式来替换它的一部分。我尝试以这种方式使用 gsub:

gsub("(BB{1}.*%{1}), ","BB: no data, ",string)

但它返回下一个:

"AA: 1%, BB: no data, DD: 4% and EE: 5%."

%就好像它正在从头到尾寻找符号。我想替换到下一个%,而不是最后一个,保留 CC 部分。所需的输出:

"AA: 1%, BB: no data, CC: 3%, DD: 4% and EE: 5%."

这类问题通常被标记为重复。我一直在寻找半小时而一无所获,所以我决定询问一些正则表达式大师是否可以提供帮助。

标签: rregexgsub

解决方案


怎么样:

gsub("(BB: )\\d%","\\1no data", string)

推荐阅读