使用regex从R中的字符串中提取值

use*_*646 0 regex r

我正在尝试提取此字符串的第一个和第二个数字并将它们存储在单独的变量中.

(User20,10.25)
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚如何获得用户编号,然后获取他的价值.

到目前为止我设法做到的是这个,但我不知道如何删除字符串的其余部分并仅获取数字.

gsub("\\(User", "", string)
Run Code Online (Sandbox Code Playgroud)

akr*_*run 6

尝试

str1 <- '(User20,10.25)'
scan(text=gsub('[^0-9.-]+', ' ', str1),quiet=TRUE) 
#[1] 20.00 10.25
Run Code Online (Sandbox Code Playgroud)

如果字符串是

str2 <- '(User20-ht,-10.25)'
scan(text=gsub('-(?=[^0-9])|[^0-9.-]+', " ", str2, perl=TRUE), quiet=TRUE)
#[1]  20.00 -10.25
Run Code Online (Sandbox Code Playgroud)

要么

library(stringr) 
str_extract_all(str1, '[0-9.-]+')[[1]]
#[1] "20"    "10.25"
Run Code Online (Sandbox Code Playgroud)

或使用 stringi

library(stringi)
stri_extract_all_regex(str1, '[0-9.-]+')[[1]]
#[1] "20"    "10.25"
Run Code Online (Sandbox Code Playgroud)


A5C*_*2T1 5

Tyler Rinker的"qdapRegex"软件包有一些对这类东西有用的功能.

在这种情况下,您很可能会对以下内容感兴趣rm_number:

library(qdapRegex)
rm_number(x, extract = TRUE)
# [[1]]
# [1] "20"    "10.25"
Run Code Online (Sandbox Code Playgroud)