如何在 r 中提取具有可变间距的文本之前的数字?

How do I extract the number before a text with variable spacing in r?

我想捕获所有后面带有 G 的数字(我只想要数字)。我试过以下方法,但它不会给我后面跟着 G 的那个。

a="1.1G;1.2 G;1.435 G;1.1   G;1.5555G"
 stringr::str_extract_all(a, "(?<!\d)\d+\.*\d*(?=\s*G)\b")

所以我想要从上面提取的所有数字,因为所有数字后面都有G(数字和字母G之间是否有空格无关紧要)

所以我希望摘录具有:

1.1, 1.2,1.435,1.1,1.5555

您可以省略负向回顾,因为匹配已经从第一个数字开始,并且匹配带有可选小数部分的数字,断言右边的是 G,允许可选的空白字符。

\d+(?:\.\d+)?(?=\s*G)

Regex demo | R demo

a="1.1G;1.2 G;1.435 G;1.1   G;1.5555G"
stringr::str_extract_all(a, "\d+(?:\.\d+)?(?=\s*G\b)")

输出

[[1]]
[1] "1.1"    "1.2"    "1.435"  "1.1"    "1.5555"