wen*_*wen 12 regex replace r wildcard
我有一个字符串.
str = c("F14 : M114L","W15 : M116L, W15 : M118L","W15 : D111L, F14 : E112L, F14 : M116L")
目标是删除:和L之间的任何东西(也包括:)前面的空白区域,这样我最终会拥有
"F14", "W15, W15", "W15, F14, F14"
我正在考虑使用
gsub(" : [[:alnum:]]L", "", str)
但显然它不起作用.不知道是否有类似通配符的东西可以代表任意数量的数字和字符:和L.
这样做:
gsub(" : .*?L", "", str)
#[1] "F14"           "W15, W15"      "W15, F14, F14"
您可以使用我维护的qdapRegex包轻松完成此操作:
str = c("F14 : M114L","W15 : M116L, W15 : M118L","W15 : D111L, F14 : E112L, F14 : M116L")
library(qdapRegex)
rm_between(str, "\\s:", "L")
## [1] "F14"           "W15, W15"      "W15, F14, F14"
qdapRegex的目的是在它教导时有用.如果您对使用的正则表达式感兴趣...
S("@rm_between", "\\s:", "L")
## [1] "(\\s:)(.*?)(L)"
gsub(S("@rm_between", "\\s:", "L") , "", str)
几种方法.
如果它总是三个,请取前几个字母:
substr(str,1,3)
我个人也喜欢stringr.它使提取非常简单.模式你想要的,而不是你不想要的.
library(stringr)
str_extract(str,"[A-Z][0-9]*")
我已经为矢量简化了这些,但你有子元素,你需要这样的东西:
splits <- strsplit(str,", ")
result <- lapply(splits, substr, start = 1, stop = 3 )
要么
result <- lapply(splits, str_extract, pattern = "[A-Z][0-9]*")