当正则表达式的一部分要保留在后续的拆分字符串中时,如何用正则表达式拆分R中的字符串?

艾伦

我有一个这样的字符串向量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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章