首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有多个标准的r strsplit()

具有多个标准的r strsplit()
EN

Stack Overflow用户
提问于 2016-09-05 06:14:17
回答 1查看 2.2K关注 0票数 4

我试图根据不同的标准来分割句子。我希望在“is”之后分几个句子,在“从不”之后再分几个句子。我能够根据这两种条件中的任何一种条件来拆分句子,但不能两者兼得。

代码语言:javascript
复制
str <- matrix(c("This is line one", "This is not line one", 
                "This can never be line one"), nrow = 3, ncol = 1)

>str
     [,1]                        
[1,] "This is line one"          
[2,] "This is not line one"      
[3,] "This can never be line one"

str2 <- apply(str, 1, function (x) strsplit(x, " is", fixed = TRUE))

> str2
[[1]]
[[1]][[1]]
[1] "This"      " line one"


[[2]]
[[2]][[1]]
[1] "This"          " not line one"


[[3]]
[[3]][[1]]
[1] "This can never be line one"

我想在“从不”之后把最后一句分开。我不知道该怎么做。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-05 06:28:14

我们可以使用regex旁观者在“is”或“to”之后的空间分割行。在这里,(?<=\\bis)\\s+is|后面的一个或多个空格(\\s+)匹配为与“从不”字后面的空格(\\s+)匹配。

代码语言:javascript
复制
strsplit(str[,1], "(?<=\\bis)\\s+|(?<=\\bnever)\\s+", perl = TRUE)
#[[1]]
#[1] "This is"  "line one"

#[[2]]
#[1] "This is"      "not line one"

#[[3]]
#[1] "This can never" "be line one"   

如果我们想移除“is”和“never”

代码语言:javascript
复制
strsplit(str[,1], "(?:\\s+(is|never)\\s+)")
#[[1]]
#[1] "This"     "line one"

#[[2]]
#[1] "This"         "not line one"

#[[3]]
#[1] "This can"    "be line one"
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39324793

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档