R中的分裂字符串(与数字,括号和字符混合)

时间:2014-05-08 21:21:29

标签: r split

我有一个字符串,包含数字,括号和字符。我想将它们分成不同的行。有什么可能的方法呢?谢谢你的帮助。

例如,字符串就像"3. abc4(). 3. efg3() a() 4.ed."。 最终结果如下:

3. abc4().
3. efg 3() a()
4. ed.

1 个答案:

答案 0 :(得分:1)

您可以使用正则表达式执行此操作。这是一种这样的方式

x <- "3. abc4(). 3. efg3() a() 4.ed."
m <- gregexpr("\\d\\..*?(?=\\s*\\d\\.|$)",x, perl=T)
v <- regmatches(x,m)[[1]]
v; #[1] "3. abc4()."    "3. efg3() a()" "4.ed."

这样就给出了一个带有每个单独元素的向量。然后,如果你想要,你可以将它们与中间的换行符组合,然后将其打印出来(使用cat,否则新行打印为“\ n”)

cat(paste(v, collapse="\n"))
# 3. abc4().
# 3. efg3() a()
# 4.ed.

如果您不熟悉正则表达式,它可能看起来有点疯狂,但它会查找一个数字,后跟一个小数。然后它执行一个非贪婪的匹配,当后面的内容只是空格,然后是另一个数字周期组合或字符串的结尾时停止。