Python正则表达式 - 在子字符串中查找多个字符

时间:2017-04-21 10:45:42

标签: python regex python-2.7 regex-group

print 'cycle' ;While i in range(1,n) [[print "Number:" ;print i; print 'and,']]

例如,我有这样一条线。我只想从双方括号内的[[...]]子字符串中提取分号字符。

如果我使用re.search(\[\[.*(\s*;).*\]\]),我只会得到一个分号。对此有适当的解决方案吗?

1 个答案:

答案 0 :(得分:3)

对于像这样的事情,正则表达式永远不是一个很好的选择,因为它很容易绊倒,但以下模式适用于琐碎的案例

;(?=(?:(?!\[\[).)*\]\])

模式分解:

;                # match literal ";"
(?=              # lookahead assertion: assert the following pattern matches:
    (?:          
        (?!\[\[) # as long as we don't find a "[["...
        .        # ...consume the next character
    )*           # ...as often as necessary
    \]\]         # until we find "]]"
)

换句话说,模式会检查分号后跟]],但后面跟不是[[

模式不起作用的字符串示例:

  • ; ]](将匹配)
  • [[ ; "this is text [[" ]](不匹配)