我有一个这样的字符串向量x = c("ABC", "ABC, EF", "ABC, DEF, 2 stems", "DE, other comments, and stuff")
。
我想将它们分成两个部分:1)大写字母集(2或3个字母,用逗号隔开),以及2)最后一个“ [AZ] [AZ]”之后的所有内容。
结果应该是
[[1]]
[1] "ABC"
[[2]]
[1] "ABC, EF"
[[3]]
[1] "ABC, DEF" "2 stems"
[[4]]
[1] "DE" "other comments, and stuff"
我尝试了strsplit(x, "[A-Z][A-Z], [a-z0-9]")
和strsplit(x, "(?:[A-Z][A-Z], )[a-z0-9]")
,两者都返回了
[[1]]
[1] "ABC"
[[2]]
[1] "ABC, EF"
[[3]]
[1] "ABC, D" " stems"
[[4]]
[1] "" "ther comments, and stuff"
分割位置的标识取决于第一个子字符串的结尾和第二个子字符串的开头,因此这些部分将从最终结果中排除。
如上所示,在将拆分正则表达式的相关部分包含在每个子字符串中的过程中,如上所示,对您的任何帮助都表示赞赏!
一种选择是 str_split
library(stringr)
str_split(x, ", (?=[a-z0-9])", n = 2)
#[[1]]
#[1] "ABC"
#[[2]]
#[1] "ABC, EF"
#[[3]]
#[1] "ABC, DEF" "2 stems"
#[[4]]
#[1] "DE" "other comments, and stuff"
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句