如果我有以下字符串:
s = 'sdsdsdBetreft:ddddddBetreft:HOOOIIIIgagaga'
我如何获得HOOOIIII
?
我尝试了以下操作:
p = re.search(r'Betreft:(.*?)gagaga', s).group(1)
print(p)
但这给了我
ddddddBetreft:HOOOIIII
这是因为“ Betreft”发生了多次。我迷路了。
有什么提示吗?
答案 0 :(得分:0)
如果要确保在最后一个Betreft
之前不捕获任何内容,那么一种选择是使用环视。考虑以下回火的点:
(?:(?!Betreft:).)*
这表示要消耗任何东西,只要我们永不超前并看到字符串Betreft
。在以下模式的上下文中,这是一种避免在Betreft
较早出现时开始比赛的方法。
s = 'sdsdsdBetreft:ddddddBetreft:HOOOIIIIgagaga'
p = re.search(r'(?<=Betreft:)(?:(?!Betreft:).)*(?=gagaga)', s).group(0)
print(p)
HOOOIIII
答案 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>
不同的字符,
也许更好的选择是非空变体,因此中央
正则表达式的一部分应为:.*
。
在定义“边界字符串”时(在匹配文本之前和之后), 将它们都用作正向后看和正向后看, 因此整个正则表达式可以是:
: