Java:使用令牌分割字符串并使用正则表达式保存令牌

时间:2018-10-17 17:13:00

标签: regex

我需要使用正则表达式使用这些可能的标记(<=,<,>=,>,==)拆分字符串。这是我要实现的两个示例:

1.
Input: 123<=456
Result :[ 123, <=, 456]

2.
Input: 123<456
Result: [123, <, 456]

我编写了以下正则表达式,该正则表达式适用于第一个示例,但不适用于第二个示例。怎么了?

正则表达式:((?<=((<=)|(==)|(>=))|(?=((<=)|(==)|(>=))

2 个答案:

答案 0 :(得分:3)

Result = [Group 1, Group 2, Group 7]使用

(\d+)((([><])(=?))|(==))(\d+)

如此处https://regex101.com/r/kIDOBy/1

enter image description here

结果与以下结果不符:

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

说明:

  1. Group1(\ d +)捕获表达式之前的所有数字。
  2. Group2([<=>] {1,2})可以根据需要捕获任意一个表达式(<=,<,> =,>,==)
  3. Group3(\ d +)再次捕获表达式之后的所有数字。

编辑:

好吧,有人提到它不应捕获其他可能的表达式,尽管这似乎不是真实的情况,因为OP没这么说,它们将是无效的运算符。您不能将>>或<<作为有效的运算符。但没关系,一个人可以使用此更新的正则表达式仅匹配OP给出的表达式。这看起来有点复杂,并且可读性很差,OP似乎并没有真正需要它,但是这里确实需要。

(\ d +)((?:(?:<=)| <|(?:> =)|> |(?:==)))(\ d +)

在此处使用更新的正则表达式

https://regex101.com/r/hhc1t9/3