正则表达式拆分布尔值

时间:2013-09-29 04:44:28

标签: regex r

我希望将字符串拆分为向量和列表。如果有OR||我想要拆分成列表。如果有 AND or&& split into a vector. With the word version I get it but not with the use of | and&`。这是代码:

splitting <- function(x) {
    lapply(strsplit(x, "OR|[\\|\\|]"), function(y){
       strsplit(y, "AND|[\\&\\&]")
    })
}

splitting("3AND4AND5OR4OR6AND7") ## desired outcome for all three
splitting("3&&4&&5||4||6&&7")
splitting("3&&4&&5OR4||6&&7")

这是期望的结果:

> splitting("3AND4AND5OR4OR6AND7")
[[1]]
[[1]][[1]]
[1] "3" "4" "5"

[[1]][[2]]
[1] "4"

[[1]][[3]]
[1] "6" "7"

如何正确设置此正则表达式?我做错了什么?

1 个答案:

答案 0 :(得分:1)

我不是说这是最好的答案,但是如果你已经使用“AND”和“OR”解决了问题那么为什么不把它减少到你已经解决的问题呢?

splitting <- function(x) {
  x <- gsub("&&", "AND", x, fixed = TRUE)
  x <- gsub("||", "OR", x, fixed = TRUE)

  lapply(strsplit(x, "OR|[\\|\\|]"), function(y){
    strsplit(y, "AND|[\\&\\&]")
  })
}

splitting("3AND4AND5OR4OR6AND7") ## desired outcome for all three
splitting("3&&4&&5||4||6&&7")
splitting("3&&4&&5OR4||6&&7")

这只是我头脑中的第一件事,我并没有真正考虑过是否有更好的方法。

这似乎也有效

splitting <- function(x) {
  #x <- gsub("&&", "AND", x, fixed = T)
  #x <- gsub("||", "OR", x, fixed = T)

  lapply(strsplit(x, "OR|\\|\\|"), function(y){
    strsplit(y, "AND|\\&\\&")
  })
}