2016-03-06 108 views
1

从这个字符串border-color:#002449;left:74.4%top;37%;我想使第一个百分比74.4%变量名为X,第二个百分比37%变量名为Y如何在R中str_extract百分比?

我试图玩弄这个表达式"^.*?(\\d+)%.*"但这取出%符号,只有提取从74.4

任何帮助第二4将不胜感激。请让我知道是否需要更多信息。

回答

1
s <- "border-color:#002449;left:74.4%top;37%;" 
regmatches(s, gregexpr("\\d+(\\.\\d+){0,1}%", s))[[1]] 
# [1] "74.4%" "37%" 

library(stringr) 
str_extract_all(s, "\\d+(\\.\\d+){0,1}%")[[1]] 
# [1] "74.4%" "37%" 
+1

两种变体:' '\\?d + \\ d *%''(当量)和' '[\\ d。] +%''(在这里工作,但关于时期的具体情况较少) – alistaire

+0

谢谢你的回答。我现在正在做:'X < - str_extract(s,“\\ d +(\\。\\ d +){0,1}%”)',这会提取第一个百分比。我确信只需要提取第二个百分比所需的小改动,以便创建'Y'变量,但我不确定它是什么。 – Dre

+0

@Dre,如果你真的想要两个单独的变量,为什么不提取这两个字符串,如我在回答一些变量'e'然后'X < - e [1]; Y < - e [2]'?我不认为用'str_extract'来实现你想要的有一些改变;它返回匹配模式的's'的第一部分(它不能包含's'中的相对位置信息)。 – Julius