【发布时间】:2020-11-13 03:07:59
【问题描述】:
我有一堆格式为d.d$ word1 word2 word3 的字符串。字 2 和 3 可以是字符串,也可以不是。例如,我有这些字符串:
1.0% SELLING
3.2% AND 1.0% AND 1.2%
1.0% SOLD PRICE
1.2% PURCHASE PRICE FINAL
2.5% AND 1.0%
1.0% SELLING 2.0% people
我愿意做的是只对字符串1、3、4我只保留1.0% 1.0% 1.2% 我试图做的是:
gsub("(\\d\\.\\d%) \\w+ ((?:\\w+)?)+", "\\1",x)
而我使用上述模式的原因是:
(\\d\\.\\d%) ....> capturing the number part
\\w+ .....> first word
((?:\\w+)?)+ .....> second and other words (optional and in no-capturing group)
(由于某种原因,\s 在某些情况下对我不起作用,它被捕获为 s!所以我在单词之间使用空格)
预期结果应如下所示:
1.0%
3.2% AND 1.0% AND 1.2%
1.0%
1.2%
2.5% AND 1.0%
1.0% SELLING 2.0% people
代码应该只更改遵循以下模式的字符串:d.d% (rest of the string are only words and not a number)(这就是为什么 1.0% SELLING 2.0% 的人没有被更改)
但是,此代码仅适用于 2 个单词,而对于 1 或 3 个单词则不起作用。请告诉我如何解决这个问题?
【问题讨论】:
-
@RonakShah 我添加了结果