我需要使用正则表达式使用这些可能的标记(<=,<,>=,>,==)
拆分字符串。这是我要实现的两个示例:
1.
Input: 123<=456
Result :[ 123, <=, 456]
2.
Input: 123<456
Result: [123, <, 456]
我编写了以下正则表达式,该正则表达式适用于第一个示例,但不适用于第二个示例。怎么了?
正则表达式:((?<=((<=)|(==)|(>=))|(?=((<=)|(==)|(>=))
答案 0 :(得分:3)
Result = [Group 1, Group 2, Group 7]
使用
(\d+)((([><])(=?))|(==))(\d+)
如此处https://regex101.com/r/kIDOBy/1
结果与以下结果不符:
123>>232
123<<232
123=232
答案 1 :(得分:1)
您可以使用此正则表达式和捕获,组1 2和3。
library(shiny)
ui <- fluidPage(
"disp filter:",
textOutput("dispOut"),
DT::dataTableOutput("table")
)
server <- function(input, output, session) {
output$table <- DT::renderDataTable(
DT::datatable(
mtcars,
filter = "top",
options = list(
drawCallback = JS('function(){ Shiny.onInputChange("dispFilter", this.api().table().columns(3).search()[0]); }')
)
)
)
output$dispOut <- renderText(input$dispFilter)
}
shinyApp(ui,server)
在这里检查
https://regex101.com/r/hhc1t9/1
说明:
编辑:
好吧,有人提到它不应捕获其他可能的表达式,尽管这似乎不是真实的情况,因为OP没这么说,它们将是无效的运算符。您不能将>>或<<作为有效的运算符。但没关系,一个人可以使用此更新的正则表达式仅匹配OP给出的表达式。这看起来有点复杂,并且可读性很差,OP似乎并没有真正需要它,但是这里确实需要。
(\ d +)((?:(?:<=)| <|(?:> =)|> |(?:==)))(\ d +)
在此处使用更新的正则表达式