我正在尝试提取此字符串的第一个和第二个数字,并将它们存储在单独的变量中。
(User20,10.25)
我无法弄清楚如何获取用户编号,然后知道他的价值。
到目前为止,我设法做到了这一点,但我不知道如何删除字符串的其余部分并仅获取数字。
gsub("\\(User", "", string)
答案 0 :(得分:6)
尝试
str1 <- '(User20,10.25)'
scan(text=gsub('[^0-9.-]+', ' ', str1),quiet=TRUE)
#[1] 20.00 10.25
如果字符串是
str2 <- '(User20-ht,-10.25)'
scan(text=gsub('-(?=[^0-9])|[^0-9.-]+', " ", str2, perl=TRUE), quiet=TRUE)
#[1] 20.00 -10.25
或者
library(stringr)
str_extract_all(str1, '[0-9.-]+')[[1]]
#[1] "20" "10.25"
或使用stringi
library(stringi)
stri_extract_all_regex(str1, '[0-9.-]+')[[1]]
#[1] "20" "10.25"
答案 1 :(得分:5)
Tyler Rinker&#39; "qdapRegex" package有一些对这类内容有用的功能。
在这种情况下,您很可能对rm_number
:
library(qdapRegex)
rm_number(x, extract = TRUE)
# [[1]]
# [1] "20" "10.25"
答案 2 :(得分:4)
您可以将strsplit
与sub
...
> sub('\\(User|\\)', '', strsplit(x, ',')[[1]])
[1] "20" "10.25"
可能更容易匹配您想要的上下文。
> regmatches(x, gregexpr('[0-9.]+', x))[[1]]
[1] "20" "10.25"
答案 3 :(得分:0)
以下是一种方法:
[^,\)\([A-Z]]