[英]gsub R extract numeric from string
我有這個輸入字符: ($3.24)
我想得到3.24
我嘗試過:
test <- c("($3.24)")
aa <- gsub("[0-9]+\\.?[0-9]+", '\\1', test)
\\\\1
的替代品是什么?
表達式\\\\1
表示正則表達式的第一個捕獲組中的內容。 捕獲組由閉包(括號)定義,但由於未定義任何有意義的內容,因此無法獲得所需的結果。
這是gsub()
正確使用以獲取所需內容的方法:
> gsub("\\(\\$([0-9]+\\.+[0-9]+)\\)", "\\1", "($3.24)")
[1] "3.24"
這里使用的正則表達式是:
\(\$([0-9]+\.+[0-9]+)\)
捕獲組是([0-9]+\\.+[0-9]+)
,它是介於($
和右括號之間)
,該數字可能包含一個小數點。 然后使用gsub()
將test
替換為捕獲的內容,在本例中為3.24
。
您可以在此處探索此正則表達式:
您可以借助tidyr
軟件包中的extract_numeric
函數來tidyr
。
library(tidyr)
test <- c("($3.24)")
extract_numeric(test)
[1] 3.24
查看extract_numeric
的代碼,可以發現它是gsub
的簡單包裝。
function (x)
{
as.numeric(gsub("[^0-9.-]+", "", as.character(x)))
}
因此,對於當前示例,您可以使用正則表達式
gsub("[^0-9.-]+", "", test)
library(stringr)
str_extract(test, '\\d.\\d+')
#[1] "3.24"
簡單的一個
gsub("\\$", "", test)
如果您只關心數字,則可以使用
gsub("\\$(\\d+(?:\\.\\d+)?)", "\\1", test)
如果您還想刪除()
,請使用
gsub("\\(\\$(\\d+(?:\\.\\d+)?)\\)", "\\1", test)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.