获取字符串之间的子字符串。但是开始发生多次

时间:2018-09-28 02:13:50

标签: python regex python-3.x

如果我有以下字符串:

s = 'sdsdsdBetreft:ddddddBetreft:HOOOIIIIgagaga'

我如何获得HOOOIIII

我尝试了以下操作:

p = re.search(r'Betreft:(.*?)gagaga', s).group(1)
print(p)

但这给了我

ddddddBetreft:HOOOIIII

这是因为“ Betreft”发生了多次。我迷路了。

有什么提示吗?

3 个答案:

答案 0 :(得分:0)

如果要确保在最后一个Betreft之前不捕获任何内容,那么一种选择是使用环视。考虑以下回火的点:

(?:(?!Betreft:).)*

这表示要消耗任何东西,只要我们永不超前并看到字符串Betreft。在以下模式的上下文中,这是一种避免在Betreft较早出现时开始比赛的方法。

s = 'sdsdsdBetreft:ddddddBetreft:HOOOIIIIgagaga'
p = re.search(r'(?<=Betreft:)(?:(?!Betreft:).)*(?=gagaga)', s).group(0)
print(p)

HOOOIIII

Demo

答案 1 :(得分:0)

您可以在正则表达式前面添加docker exec -it ns-orchestration_data_janusgraph_1 bin/nodetool -h data_storage -u cassandra -pw <my-password-here> status 来消耗.*之前出现的所有内容:

Betreft:

这将返回:re.search(r'.*Betreft:(.*?)gagaga', s).group(1)

答案 2 :(得分:0)

问题的根源是shiny::runApp(list( ui = bootstrapPage( tabsetPanel(id = "mainTab", tabPanel("Tab1", tabsetPanel(id = "subTab1", tabPanel("subTab11",value=1), tabPanel("subTab12",value=2), tabPanel("subTab13",value=3), selected = 1 )), tabPanel("Tab2", tabsetPanel(id = "subTab2", tabPanel("subTab21",value=1), tabPanel("subTab22",value=2), tabPanel("subTab23",value=3), selected = 1 )) ) ), server = function(input, output,session) { current_subtab<-reactiveValues(selected=1) # when either sub tabPanel change, save the current selected sub tabPanel to reactiveValues observeEvent(c(input$subTab1,input$subTab2),{ if(input$mainTab=="Tab1"){ current_subtab$selected<-input$subTab1 }else if(input$mainTab=="Tab2"){ current_subtab$selected<-input$subTab2 } }) # when main tabPanel changed, update the default select subPanel value observeEvent(input$mainTab,{ if(input$mainTab=="Tab1"){ updateTabsetPanel(session,"subTab1",selected = current_subtab$selected) }else if(input$mainTab=="Tab2"){ updateTabsetPanel(session,"subTab2",selected = current_subtab$selected) } }) } )) 之类的表达式通常匹配 与正则表达式作者的实际意图相比,太多文本。

一种可能的解决方案是匹配一个与 <key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <true/> <key>NSExceptionDomains</key> <dict> <key>abc.com</key> <dict> <key>NSExceptionAllowsInsecureHTTPLoads</key> <true/> <key>NSIncludesSubdomains</key> <true/> </dict> </dict> </dict> 不同的字符, 也许更好的选择是非空变体,因此中央 正则表达式的一部分应为:.*

在定义“边界字符串”时(在匹配文本之前和之后), 将它们都用作正向后看正向后看, 因此整个正则表达式可以是:

: