Regex R:使用正则表达式查找产品代码

Regex R:使用正则表达式查找产品代码,regex,r,expression,gsub,Regex,R,Expression,Gsub,因此,我有一个产品项目描述列表。我已经将其加载到R中。这些描述中的大多数都是毫无意义的,我们正试图从中提取一个像样的项目代码 我可以使用R中的正则表达式来创建一个新的向量,该向量将只包含列表中的整数值,而不是逐行遍历它吗 我现在掌握了大部分代码 JJ <- read.csv2(file.choose(),header= TRUE) JJ$X <- gsub(pattern = "[0-9]+", replacement = "", x = JJ$LGY_DHB_ITEM_D

因此,我有一个产品项目描述列表。我已经将其加载到R中。这些描述中的大多数都是毫无意义的,我们正试图从中提取一个像样的项目代码

我可以使用R中的正则表达式来创建一个新的向量,该向量将只包含列表中的整数值,而不是逐行遍历它吗

我现在掌握了大部分代码

JJ <- read.csv2(file.choose(),header= TRUE)
JJ$X <- gsub(pattern = "[0-9]+", replacement = "", 
    x = JJ$LGY_DHB_ITEM_DESCRIPTION, ignore.case = TRUE)
JJ您可以尝试用空字符串替换非(
^
)数字(
[:digit:][/code>)字符:

gsub("[^[:digit:]]*", "", 'PRIVATE CONTRACT INV 710456354')
[1] "710456354"
但如果字符串中有多个数字,则此操作无效:

gsub("[^[:digit:]]*", "", 'PRIVATE 123 CONTRACT INV 710456354')
[1] "123710456354"
您可以尝试在每个字符串中查找最长的数字:

JJ <- data.frame(LGY_DHB_ITEM_DESCRIPTION=c('PRIVATE CONTRACT INV 710456354', 'PRIVATE 123 CONTRACT INV 710456354'))
m <- gregexpr("[0-9]*", JJ$LGY_DHB_ITEM_DESCRIPTION)
all_m <-  regmatches(JJ$LGY_DHB_ITEM_DESCRIPTION, m)
JJ$X <- mapply(FUN =function(stri,idx) stri[idx],all_m, sapply(lapply(all_m,nchar),which.max))
JJ
            LGY_DHB_ITEM_DESCRIPTION         X
1     PRIVATE CONTRACT INV 710456354 710456354
2 PRIVATE 123 CONTRACT INV 710456354 710456354

JJ您很可能可以,您能提供一个例子吗?应该是“[0-9][0-9]*”以确保它与至少一个数字的整数匹配吗?(或者“[0-9]+”,我不知道R,只知道正则表达式)
grep
不提取任何东西(不,我不是下一个投票人)oups@thelatemail,太快了,而且thx不是一个评论者而不是downvoter@eewanco这听起来很对,但我不知道在replace参数中放什么。