如何在R正则表达式中排除一些模式,有些可能是2个或更多的char

时间:2018-05-19 19:39:46

标签: r regex

我尝试使用以下正则表达式将字符串标记为标记。

基本上,这个字符串是R源代码。因此,我想将:punct:分成单独的令牌。

但是,我希望将'_保留在任何单词中,因为它们属于单个标记。

我的问题是,如何添加更多案例,例如==<=<-&&。我试过了['_==<=<-&&],但我认为这不是正确的方法。

strsplit(str, "(\\s+)|(?!['_])(?=[[:punct:]])", perl = TRUE)

1 个答案:

答案 0 :(得分:2)

使用R解析器本身比自己做更好(这是一项艰巨的任务,因为你必须基本上重新实现它。)

例如:

 makeSmall = () => {
        var text = this.refs.hello.innerText
        console.log(text)
      }

编辑

(根据OP的评论)

x <- parse(text = "x <- c(1, 4)\n x ^ 3 -10 ; outer(1:7, 5:9)\n a <-3 ; a < -3")

str(lapply(as.list(x), as.list))

List of 5
 $ :List of 3
  ..$ : symbol <-
  ..$ : symbol x
  ..$ : language c(1, 4)
 $ :List of 3
  ..$ : symbol -
  ..$ : language x^3
  ..$ : num 10
 $ :List of 3
  ..$ : symbol outer
  ..$ : language 1:7
  ..$ : language 5:9
 $ :List of 3
  ..$ : symbol <-
  ..$ : symbol a
  ..$ : num 3
 $ :List of 3
  ..$ : symbol <
  ..$ : symbol a
  ..$ : language -3