我正在使用 R 并且有两个字符向量:
measures <- c('cm', 'mm', 'ml')
strings <- c('hgtrdhg cm12 mhjgf','asdfsf 12mm jhgjhg','adadf 45ml','ml89 jygjgh', 'cm 59 gfhgfd')
我必须为每个字符串提取度量单位和相关数字,例如:
cm12、12mm、45ml、ml89、cm59 (最后一串cm到59之间本来有一个空格)
数字可以位于测量单位的前面或后面。
最佳答案
我们可以循环“度量”并提取元素
library(dplyr)
library(stringr)
library(purrr)
measures %>%
map(~ str_extract(strings, paste0("\\d*", .x, "\\s*\\d*"))) %>%
do.call(coalesce, .) %>%
str_replace_all(" ", "")
#[1] "cm12" "12mm" "45ml" "ml89" "cm59"
或者,如果我们想一次使用所有“度量”,则通过使用 |
进行 collapse
来粘贴
它。
pat <- paste0("(", paste("\\d*", measures, "\\s*\\d*", sep="", collapse="|"), ")")
str_replace_all(str_extract(strings, pat), " ", "")
#[1] "cm12" "12mm" "45ml" "ml89" "cm59"
关于R 从给定度量单位列表的字符串中提取度量单位和附加数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48941566/