Shiny DT::datatable 的布尔“正则表达式”是什么?

问题描述 投票:0回答:1

R Shiny 中有一个选项允许通过“regexp”进行搜索。 假设我们有 2 个字符串要搜索:“Merc 230”和“Merc 280”。 工作的“OR”正则表达式是“Merc 230 | Merc 280”。什么将起作用 AND 和 NOT 运算符的正则表达式?

library(DT)

DT::datatable(mtcars,  options = list(
    search = list(regex = TRUE)))

数据表“搜索”框中的字符串:

1 - 或:Merc 230 | Merc 280 - 工作

2 - 并且:Merc 230 和 Merc 280 - 不起作用

3 - 不是:! Merc 230 和 Merc 280 - 不工作

r regex shiny dt
1个回答
0
投票

我不是正则表达式专家,但我有以下示例供您参考。使用

str_detect()
包中的
stringr
进行工作。我不确定它们是否也可以与
DT::datatable
一起使用,但我希望它们可以。

library(stringr)

dummy <- c("Merc 220 Merc 210", "Merc 230 xxx Merc 280", "Merc 220 xxx Merc 280")

pattern1 <- "Merc 230|Merc 280"
str_detect(dummy, pattern1)
pattern2 <- "Merc 230.*Merc 280"
str_detect(dummy, pattern2)
pattern3 <- "^(?!(.*Merc 230.*|.*Merc 280.*))"
str_detect(dummy, pattern3)

模式

.*
代表零个或多个任何类型的字符。
^(?!.*...)
表示字符串开头,后面不跟零个或多个任何类型的字符以及要排除的表达式。

要了解有关正则表达式的更多信息,我建议阅读Rstudio Cheatsheet on strings

© www.soinside.com 2019 - 2024. All rights reserved.