簡體   English   中英

使用正則表達式從R中的字符串中提取值

[英]Extracting values from a string in R using regex

我試圖提取此字符串的第一個和第二個數字並將它們存儲在單獨的變量中。

(User20,10.25)

我不知道如何獲取用戶號,然后再獲取他的值。

到目前為止,我設法做到了,但是我不知道如何刪除字符串的其余部分,而只獲取數字。

gsub("\\(User", "", string)

嘗試

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"

泰勒·林克Tyler Rinker )的“ qdapRegex”軟件包具有一些對這類東西有用的功能。

在這種情況下,您很可能會對rm_number感興趣:

library(qdapRegex)
rm_number(x, extract = TRUE)
# [[1]]
# [1] "20"    "10.25"

您可以將strsplitsub ...一起使用

> sub('\\(User|\\)', '', strsplit(x, ',')[[1]])
[1] "20"    "10.25"

匹配所需的上下文可能會更容易。

> regmatches(x, gregexpr('[0-9.]+', x))[[1]]
[1] "20"    "10.25"

以下是一種方法:

[^,\)\([A-Z]]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM