我正在尝试提取:-1960.85
来自:
">Return on Equity</span><!-- react-text: 141 --> <!-- /react-text --><!-- react-text: 142 -->(ttm)<!-- /react-text --><sup aria-label="KS_HELP_SUP_undefined" data-reactid="143"></sup></td><td class="Fz(s) Fw(500) Ta(end)" data-reactid="144">-1,960.85%</td></tr></tbody></table></div><div data-reactid="145"><h3 class=""
我正在使用以下内容来提取它:
stringr::str_extract(loc, "[:punct:]\d+\.\d+\D")
不幸的是,这认为我指的是1986.85中的逗号,并完全剪切了1
。顺便说一下,我不想要逗号。如何使用str_extract()
(或任何其他方法(来获得所需的输出?
loc <- ">Return on Equity</span><!-- react-text: 141 --> <!-- /react-text --><!-- react-text: 142 -->(ttm)<!-- /react-text --><sup aria-label="KS_HELP_SUP_undefined" data-reactid="143"></sup></td><td class="Fz(s) Fw(500) Ta(end)" data-reactid="144">-1,960.85%</td></tr></tbody></table></div><div data-reactid="145"><h3 class=""
在上面的例子中,您可以通过将,
和digits
一起包含为[0-9]来修复它。
stringr::str_extract(loc, "[:punct:][0-9,]+\.\d+\D")
#[1] "-1,960.85%"
另一种选择是:
library(stringr)
str_replace(str_extract(loc, "[:punct:][0-9,]+\.\d+\D"),",","")
#[1] "-1960.85%"
但是,如果您的内容类型为html/xml
,那么正如@TimBiegeleisen
所建议的,您应该在分析文本之前使用合适的解析器来解析文本