Это действительно зависит от вашего регулярного выражения.
... предоставляет только одну операцию набора простых символов: вычитание . Этого достаточно для вашего примера, поэтому вы можете просто использовать
[\w-[_]]
. Если за -
следует вложенный класс символов, он вычитается. Просто как это ...
... предоставляет гораздо более богатый набор функций набора символов символа . В частности, вы можете получить пересечение двух наборов, таких как [[abc]&&[cde]]
(что в данном случае даст c
). Пересечение и отрицание вместе дают вам вычитание:
[\w&&[^_]]
... (которые поддерживают lookaheads) позволяют вам имитировать вычитание с помощью отрицательного вида:
(?!_)\w
Это сначала проверяет, что следующий символ не является _
, а затем соответствует любому \w
(который не может быть _
из-за негативного просмотра).
Обратите внимание, что каждый из этих подходов является полностью общим, поскольку вы можете вычесть два произвольно сложных класса символов.
Исправление запроса в списке исправлено для меня:
library(shiny)
ui <- fluidPage(
textInput(inputId = "inquiry", label = "enter text"),
actionButton(inputId = "searchButton", label = "Run"),
verbatimTextOutput("queryList", placeholder = FALSE)
)
server <- function(input, output, session) {
queryList <- reactiveValues()
queryList$values <- c()
observeEvent(input$searchButton, {
queryList$values[length(queryList$values) + 1] <- input$inquiry
})
output$queryList <- renderPrint({
if (!is.null(queryList$values)) {
queryList$values
}
})
}
shinyApp(ui = ui, server = server)