R 正则表达式:在开始处捕获数字,并在字符后对数字求反
我需要捕捉3.93,4.63999…,和-5.35。我尝试过各种变化,但一直无法获得正确的数字集 时间:20:30 3.93 表8.6MG数量:60 4.639999997 -5.35 2000单位标签数量:30 数量 数量:180 第4MG章R 正则表达式:在开始处捕获数字,并在字符后对数字求反,r,regex,R,Regex,我需要捕捉3.93,4.63999…,和-5.35。我尝试过各种变化,但一直无法获得正确的数字集 时间:20:30 3.93 表8.6MG数量:60 4.639999997 -5.35 2000单位标签数量:30 数量 数量:180 第4MG章 x = c("Copay: 20.30", "3.93", "TAB 8.6MG Qty:60", "4.6399999999999997", "-5.35", "2,000UNIT TAB Qty:30", "AMOUNT", "Qty:180", "
x = c("Copay: 20.30", "3.93", "TAB 8.6MG Qty:60", "4.6399999999999997", "-5.35", "2,000UNIT TAB Qty:30", "AMOUNT", "Qty:180", "CAP 4MG");
grep("^[\\-]?\\d+[\\.]?\\d+$", x);
输出(见):
如果允许使用前导/尾随空格,请使用
"^\\s*[\\-]?\\d+[\\.]?\\d+\\s*$"
试试这个
S <- c("Copay: 20.30", "3.93", "TAB 8.6MG Qty:60", "4.6399999999999997", "-5.35", "2,000UNIT TAB Qty:30", "AMOUNT", "Qty:180", "CAP 4MG")
library(stringr)
ans <- str_extract_all(S, "-?[[:digit:]]*(\\.|,)?[[:digit:]]+", simplify=TRUE)
clean <- ans[ans!=""]
所以你需要捕捉只有数字、小数和负号的线条?您到底尝试了什么不起作用?如果您有多行或多行,为什么不执行类似于.numeric(line)的操作,然后删除NAs。我不认为这里需要正则表达式。你能更详细地解释一下,到底是什么使这些数字符合你的比赛条件(还有什么使其他的不合格)?按照你提问的措辞,你可以简单地使用模式
3\.93 | 4\.63999\d*|-5\.35
。显示一个完整的所需输出是一种非常简单的方式来表达你的目标。
S <- c("Copay: 20.30", "3.93", "TAB 8.6MG Qty:60", "4.6399999999999997", "-5.35", "2,000UNIT TAB Qty:30", "AMOUNT", "Qty:180", "CAP 4MG")
library(stringr)
ans <- str_extract_all(S, "-?[[:digit:]]*(\\.|,)?[[:digit:]]+", simplify=TRUE)
clean <- ans[ans!=""]
[1] "20.30" "3.93" "8.6"
[4] "4.6399999999999997" "-5.35" "2,000"
[7] "180" "4" "60"
[10] "30"