Regex gsub R从字符串中提取数字
我有一个输入字符:Regex gsub R从字符串中提取数字,regex,r,Regex,R,我有一个输入字符: ($3.24) 我想去 3.24 我试过: test您可以借助函数extract\u numeric从软件包tidyr进行测试 library(tidyr) test <- c("($3.24)") extract_numeric(test) [1] 3.24 所以,对于当前的示例,可以使用正则表达式 gsub("[^0-9.-]+", "", test) 您可以通过函数从软件包tidyr中提取数值来完成此操作 library(tidyr) test <- c
($3.24)
我想去
3.24
我试过:
test您可以借助函数extract\u numeric
从软件包tidyr
进行测试
library(tidyr)
test <- c("($3.24)")
extract_numeric(test)
[1] 3.24
所以,对于当前的示例,可以使用正则表达式
gsub("[^0-9.-]+", "", test)
您可以通过函数从软件包tidyr
中提取数值来完成此操作
library(tidyr)
test <- c("($3.24)")
extract_numeric(test)
[1] 3.24
所以,对于当前的示例,可以使用正则表达式
gsub("[^0-9.-]+", "", test)
表达式\\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
您可以在此处探索此正则表达式:
表达式\\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
您可以在此处探索此正则表达式:
简单的一个
gsub("\\$", "", test)
如果您只关心数字,那么可以使用
gsub("\\$(\\d+(?:\\.\\d+)?)", "\\1", test)
如果还要删除()
,请使用
gsub("\\(\\$(\\d+(?:\\.\\d+)?)\\)", "\\1", test)
简单的
gsub("\\$", "", test)
如果您只关心数字,那么可以使用
gsub("\\$(\\d+(?:\\.\\d+)?)", "\\1", test)
如果还要删除()
,请使用
gsub("\\(\\$(\\d+(?:\\.\\d+)?)\\)", "\\1", test)
由于模式中没有捕获组,所以它什么也不做。将代码稍微更改为gsub(([0-9]+\\.?[0-9]+)\.,'\\1',test)
将提供所需的result@rawr:这正是我使用类似记事本++的方法。匹配您不需要的,匹配并捕获您需要保留的。由于模式中没有捕获组,所以它什么也不做。将代码稍微更改为gsub(([0-9]+\\.?[0-9]+)\.,'\\1',test)
将提供所需的result@rawr:这正是我使用类似记事本++的方法。匹配您不需要的,匹配并捕获您需要保留的。真管用!然而,有没有一种使用正则表达式的解决方案?这很有效!但是,有没有使用正则表达式的解决方案?