0

我有一个看起来有点像的数据框

uniqueID <- sample(1:10, 3, replace=F)
faultDetails <- c("fault is blah blah blah and serial is F1AB3CDE123", "Serial No: f1ds6hrc813, fault is blah blah blah", "fault: blah blah blah serial number: F2GE8FDW159")
myData <- cbind.data.frame(uniqueID, faultDetails)

我需要从每个条目中提取序列号并存储在一个新变量中,但是该字段内的位置不固定。唯一不变的是序列号的格式为F,数字,字母,字母,数字,字母,字母,字母,数字,数字,数字。此外,文本的大小写因条目而异(哦,自由文本的乐趣!)。

我想将此作为我的 dplyr 管道的一部分。任何帮助表示赞赏。

4

1 回答 1

2

这种情况与正确的正则表达式无关。我会这样处理它:

library(dplyr)
library(stringr)

uniqueID <- sample(1:10, 3, replace=F)
faultDetails <- c("fault is blah blah blah and serial is F1AB3CDE123", "Serial No: f1ds6hrc813, fault is blah blah blah", "fault: blah blah blah serial number: F2GE8FDW159")
myData <- cbind.data.frame(uniqueID, faultDetails) %>%
  mutate(serial_number = str_extract(faultDetails,
                                     "(F|f)\\d{1}\\w{2}\\d{1}\\w{3}\\d{3}"))

myData

  uniqueID                                      faultDetails serial_number
1        7 fault is blah blah blah and serial is F1AB3CDE123   F1AB3CDE123
2        9   Serial No: f1ds6hrc813, fault is blah blah blah   f1ds6hrc813
3        3  fault: blah blah blah serial number: F2GE8FDW159   F2GE8FDW159

\w字符查找“单词字符”;在这里它用于查找字母(尽管它也会检测下划线)。该\w{2}符号表示我想要一个由两个这样的字符组成的序列。元\d字符查找数字,大括号中的数字是要查找的序列长度。

以 开头的正则表达式(F|f)意味着它可以以F或开头f

于 2016-08-24T13:15:31.490 回答