我的愿望是提取以19
或20
开头的数字和分号之间的文本。
abc 1993 def ghi; klm
cba 2012 kff kkk; zzz
xxx 1999 ggg yyy; vvv
cgc 2015 tet mmm; bbb
预期输出:
93 def ghi
12 kff kkk
99 ggg yyy
15 tet mmm
很多tnx!
我们可以使用基数R中的sub
来捕获数字和;
之间的字符,并用所捕获组的后向引用(\\1
代替]
trimws(sub(".*(19|20)([^;]+);.*", "\\2", str1))
#[1] "93 def ghi" "12 kff kkk" "99 ggg yyy" "15 tet mmm"
或带有str_extract
library(stringr)
trimws(str_extract(str1, "(?<=(19|20)\\d{2})[^;]+"))
#[1] "def ghi" "kff kkk" "ggg yyy" "tet mmm"
str1 <- c("abc 1993 def ghi; klm", "cba 2012 kff kkk; zzz", "xxx 1999 ggg yyy; vvv",
"cgc 2015 tet mmm; bbb")