【发布时间】:2021-02-25 02:52:05
【问题描述】:
我希望提取字符串中不带 % 符号的十进制值。所以在这种情况下,我想要数字 0.45
x <- "document.write(GIC_annual[\"12-17 MTH\"][\"99999.99\"]);0.450%"
str_extract(x, "^;[0-9.]")
我的尝试失败了。这是我的想法。
- 从分号 ^; 处开始提取
- 抓取 0 到 9 之间的任意数字。
- 包括小数点
【问题讨论】:
我希望提取字符串中不带 % 符号的十进制值。所以在这种情况下,我想要数字 0.45
x <- "document.write(GIC_annual[\"12-17 MTH\"][\"99999.99\"]);0.450%"
str_extract(x, "^;[0-9.]")
我的尝试失败了。这是我的想法。
【问题讨论】:
你也有这个选项:
stringr::str_extract(y, "\\d\\.\\d{1,}(?=%)")
[1] "0.450"
所以基本上你向前看并检查是否有%,如果有,你捕获它之前的数字。
详情
\\d数字;
\\.点;
\\d数字;
{1,} 在. 之后捕获一位或多位数字;
(?=%)往前看是否有%,如果有则返回捕获的号码
【讨论】:
由于您不想在输出中使用分号,请将其用作后向正则表达式。
stringr::str_extract(x, "(?<=;)[0-9]\\.[0-9]+")
#[1] "0.450"
在基础 R 中使用 sub :
sub('.*;([0-9]\\.[0-9]+).*', '\\1', x)
【讨论】: